|
@@ -46,7 +46,7 @@ import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 水电费明细计算
|
|
|
|
|
|
|
+ * 姘寸數璐规槑缁嗚�绠�
|
|
|
* description: WaterElectricityListHandler <br>
|
|
* description: WaterElectricityListHandler <br>
|
|
|
* date: 2025/4/24 18:09 <br>
|
|
* date: 2025/4/24 18:09 <br>
|
|
|
* author: lhbj <br>
|
|
* author: lhbj <br>
|
|
@@ -57,7 +57,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
public static final String TABLENAME ="CT_WOE_WaterElectricity";
|
|
public static final String TABLENAME ="CT_WOE_WaterElectricity";
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取水电费详细Sql
|
|
|
|
|
|
|
+ * 鑾峰彇姘寸數璐硅�缁哠ql
|
|
|
*
|
|
*
|
|
|
* @param startPeriodDateStr
|
|
* @param startPeriodDateStr
|
|
|
* @param endPeriodDateStr
|
|
* @param endPeriodDateStr
|
|
@@ -116,23 +116,23 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取水电费详细Sql(SQL Server专用,逻辑已确认:房间向上追溯上级节点单价,水/电独立追溯)
|
|
|
|
|
- * 核心逻辑:
|
|
|
|
|
- * 1. 递归CTE遍历房间及所有上级节点(楼栋、小区等),保留起点房间ID关联
|
|
|
|
|
- * 2. 独立筛选水/电单价:非null优先、层级越近优先
|
|
|
|
|
- * 3. 优先级:树形节点单价 → 定价表单价
|
|
|
|
|
- * @param startPeriodDateStr 开始日期(格式:yyyy-MM-dd)
|
|
|
|
|
- * @param endPeriodDateStr 结束日期(格式:yyyy-MM-dd)
|
|
|
|
|
- * @param billids 账单ID集合(可为null/空,非空时追加筛选条件)
|
|
|
|
|
- * @return 拼接后的SQL字符串
|
|
|
|
|
|
|
+ * 鑾峰彇姘寸數璐硅�缁哠ql锛圫QL Server涓撶敤锛岄€昏緫宸茬‘璁わ細鎴块棿鍚戜笂杩芥函涓婄骇鑺傜偣鍗曚环锛屾按/鐢电嫭绔嬭拷婧�級
|
|
|
|
|
+ * 鏍稿績閫昏緫锛�
|
|
|
|
|
+ * 1. 閫掑綊CTE閬嶅巻鎴块棿鍙婃墍鏈変笂绾ц妭鐐癸紙妤兼爧銆佸皬鍖虹瓑锛夛紝淇濈暀璧风偣鎴块棿ID鍏宠仈
|
|
|
|
|
+ * 2. 鐙�珛绛涢€夋按/鐢靛崟浠凤細闈瀗ull浼樺厛銆佸眰绾ц秺杩戜紭鍏�
|
|
|
|
|
+ * 3. 浼樺厛绾э細鏍戝舰鑺傜偣鍗曚环 鈫� 瀹氫环琛ㄥ崟浠�
|
|
|
|
|
+ * @param startPeriodDateStr 寮€濮嬫棩鏈燂紙鏍煎紡锛歽yyy-MM-dd锛�
|
|
|
|
|
+ * @param endPeriodDateStr 缁撴潫鏃ユ湡锛堟牸寮忥細yyyy-MM-dd锛�
|
|
|
|
|
+ * @param billids 璐﹀崟ID闆嗗悎锛堝彲涓簄ull/绌猴紝闈炵┖鏃惰拷鍔犵瓫閫夋潯浠讹級
|
|
|
|
|
+ * @return 鎷兼帴鍚庣殑SQL瀛楃�涓�
|
|
|
*/
|
|
*/
|
|
|
protected StringBuilder getPersonWaterElectricitySql(String dbType, String startPeriodDateStr, String endPeriodDateStr, Collection<String> billids) {
|
|
protected StringBuilder getPersonWaterElectricitySql(String dbType, String startPeriodDateStr, String endPeriodDateStr, Collection<String> billids) {
|
|
|
|
|
|
|
|
StringBuilder sel = new StringBuilder();
|
|
StringBuilder sel = new StringBuilder();
|
|
|
|
|
|
|
|
- // 1. 递归CTE:追溯房间及所有上级节点(防自引用,避免死循环)
|
|
|
|
|
|
|
+ // 1. 閫掑綊CTE锛氳拷婧�埧闂村強鎵€鏈変笂绾ц妭鐐癸紙闃茶嚜寮曠敤锛岄伩鍏嶆�寰�幆锛�
|
|
|
sel.append("/*dialect*/ WITH DormPriceCTE AS (");
|
|
sel.append("/*dialect*/ WITH DormPriceCTE AS (");
|
|
|
- // 锚点成员:所有节点作为起点(后续主查询关联房间,不影响逻辑)
|
|
|
|
|
|
|
+ // 閿氱偣鎴愬憳锛氭墍鏈夎妭鐐逛綔涓鸿捣鐐癸紙鍚庣画涓绘煡璇㈠叧鑱旀埧闂达紝涓嶅奖鍝嶉€昏緫锛�
|
|
|
sel.append(" SELECT ");
|
|
sel.append(" SELECT ");
|
|
|
sel.append(" fid AS DormId,");
|
|
sel.append(" fid AS DormId,");
|
|
|
sel.append(" fparentId,");
|
|
sel.append(" fparentId,");
|
|
@@ -141,7 +141,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
sel.append(" 0 AS RecursionLevel");
|
|
sel.append(" 0 AS RecursionLevel");
|
|
|
sel.append(" FROM CT_DOR_Dormitory");
|
|
sel.append(" FROM CT_DOR_Dormitory");
|
|
|
sel.append(" UNION ALL");
|
|
sel.append(" UNION ALL");
|
|
|
- // 递归成员:向上遍历上级节点,保留起点房间ID(核心逻辑)
|
|
|
|
|
|
|
+ // 閫掑綊鎴愬憳锛氬悜涓婇亶鍘嗕笂绾ц妭鐐癸紝淇濈暀璧风偣鎴块棿ID锛堟牳蹇冮€昏緫锛�
|
|
|
sel.append(" SELECT ");
|
|
sel.append(" SELECT ");
|
|
|
sel.append(" child.DormId AS DormId,");
|
|
sel.append(" child.DormId AS DormId,");
|
|
|
sel.append(" parent.fparentId,");
|
|
sel.append(" parent.fparentId,");
|
|
@@ -154,7 +154,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
sel.append(" AND parent.fid != child.DormId ");
|
|
sel.append(" AND parent.fid != child.DormId ");
|
|
|
sel.append("),");
|
|
sel.append("),");
|
|
|
|
|
|
|
|
- // 2. 独立筛选「水单价」:按起点房间ID分组,取最近有效水价(非null优先、层级近优先)
|
|
|
|
|
|
|
+ // 2. 鐙�珛绛涢€夈€屾按鍗曚环銆嶏細鎸夎捣鐐规埧闂碔D鍒嗙粍锛屽彇鏈€杩戞湁鏁堟按浠凤紙闈瀗ull浼樺厛銆佸眰绾ц繎浼樺厛锛�
|
|
|
sel.append("WaterLatestPrice AS (");
|
|
sel.append("WaterLatestPrice AS (");
|
|
|
sel.append(" SELECT ");
|
|
sel.append(" SELECT ");
|
|
|
sel.append(" DormId,");
|
|
sel.append(" DormId,");
|
|
@@ -168,7 +168,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
sel.append(" FROM DormPriceCTE");
|
|
sel.append(" FROM DormPriceCTE");
|
|
|
sel.append("),");
|
|
sel.append("),");
|
|
|
|
|
|
|
|
- // 3. 独立筛选「电单价」:逻辑同水单价,独立判断电单价字段
|
|
|
|
|
|
|
+ // 3. 鐙�珛绛涢€夈€岀數鍗曚环銆嶏細閫昏緫鍚屾按鍗曚环锛岀嫭绔嬪垽鏂�數鍗曚环瀛楁�
|
|
|
sel.append("ElecLatestPrice AS (");
|
|
sel.append("ElecLatestPrice AS (");
|
|
|
sel.append(" SELECT ");
|
|
sel.append(" SELECT ");
|
|
|
sel.append(" DormId,");
|
|
sel.append(" DormId,");
|
|
@@ -182,7 +182,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
sel.append(" FROM DormPriceCTE");
|
|
sel.append(" FROM DormPriceCTE");
|
|
|
sel.append(")");
|
|
sel.append(")");
|
|
|
|
|
|
|
|
- // 4. 主查询:关联各表,返回结果字段(优先级:树形单价 → 定价表单价)
|
|
|
|
|
|
|
+ // 4. 涓绘煡璇�細鍏宠仈鍚勮〃锛岃繑鍥炵粨鏋滃瓧娈碉紙浼樺厛绾э細鏍戝舰鍗曚环 鈫� 瀹氫环琛ㄥ崟浠凤級
|
|
|
sel.append(" SELECT ");
|
|
sel.append(" SELECT ");
|
|
|
sel.append(" p.fid pid,");
|
|
sel.append(" p.fid pid,");
|
|
|
sel.append(" p.fname_l2 pName,");
|
|
sel.append(" p.fname_l2 pName,");
|
|
@@ -218,27 +218,27 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
sel.append(" LEFT JOIN CT_DOR_Dormitory dy ON ops.CFDormitoryID = dy.fid");
|
|
sel.append(" LEFT JOIN CT_DOR_Dormitory dy ON ops.CFDormitoryID = dy.fid");
|
|
|
sel.append(" LEFT JOIN WaterLatestPrice wlp ON dy.fid = wlp.DormId AND wlp.WaterRowNum = 1");
|
|
sel.append(" LEFT JOIN WaterLatestPrice wlp ON dy.fid = wlp.DormId AND wlp.WaterRowNum = 1");
|
|
|
sel.append(" LEFT JOIN ElecLatestPrice elp ON dy.fid = elp.DormId AND elp.ElecRowNum = 1");
|
|
sel.append(" LEFT JOIN ElecLatestPrice elp ON dy.fid = elp.DormId AND elp.ElecRowNum = 1");
|
|
|
- // 定价表关联:日期参数用传入的start/endPeriodDateStr,显式转换为date类型
|
|
|
|
|
|
|
+ // 瀹氫环琛ㄥ叧鑱旓細鏃ユ湡鍙傛暟鐢ㄤ紶鍏ョ殑start/endPeriodDateStr锛屾樉寮忚浆鎹�负date绫诲瀷
|
|
|
sel.append(" LEFT JOIN CT_WAT_WaterPowerPricing wpp ");
|
|
sel.append(" LEFT JOIN CT_WAT_WaterPowerPricing wpp ");
|
|
|
sel.append(" ON wpp.CFStartDate <= CONVERT(date, '").append(startPeriodDateStr).append("')");
|
|
sel.append(" ON wpp.CFStartDate <= CONVERT(date, '").append(startPeriodDateStr).append("')");
|
|
|
sel.append(" AND wpp.CFEndDate >= CONVERT(date, '").append(endPeriodDateStr).append("')");
|
|
sel.append(" AND wpp.CFEndDate >= CONVERT(date, '").append(endPeriodDateStr).append("')");
|
|
|
- // 抄表记录关联:按房间ID+日期范围匹配
|
|
|
|
|
|
|
+ // 鎶勮〃璁板綍鍏宠仈锛氭寜鎴块棿ID+鏃ユ湡鑼冨洿鍖归厤
|
|
|
sel.append(" LEFT JOIN CT_MAN_WaterPowerMeterReading wpmr ");
|
|
sel.append(" LEFT JOIN CT_MAN_WaterPowerMeterReading wpmr ");
|
|
|
sel.append(" ON wpmr.CFDormitoryID = ops.CFDormitoryID");
|
|
sel.append(" ON wpmr.CFDormitoryID = ops.CFDormitoryID");
|
|
|
sel.append(" AND wpmr.CFYears <= ops.CFCheckOutDate");
|
|
sel.append(" AND wpmr.CFYears <= ops.CFCheckOutDate");
|
|
|
sel.append(" AND DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, wpmr.CFYears) + 1, 0)) >= ops.CFCheckInDate");
|
|
sel.append(" AND DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, wpmr.CFYears) + 1, 0)) >= ops.CFCheckInDate");
|
|
|
- // 水电账单关联:按占用ID+人员ID+日期范围匹配(日期参数用传入值)
|
|
|
|
|
|
|
+ // 姘寸數璐﹀崟鍏宠仈锛氭寜鍗犵敤ID+浜哄憳ID+鏃ユ湡鑼冨洿鍖归厤锛堟棩鏈熷弬鏁扮敤浼犲叆鍊硷級
|
|
|
sel.append(" LEFT JOIN CT_WOE_WaterElectricity wey ");
|
|
sel.append(" LEFT JOIN CT_WOE_WaterElectricity wey ");
|
|
|
sel.append(" ON wey.FSourceFunction = ops.fid ");
|
|
sel.append(" ON wey.FSourceFunction = ops.fid ");
|
|
|
sel.append(" AND wey.CFPersonID = pp.FPERSONID");
|
|
sel.append(" AND wey.CFPersonID = pp.FPERSONID");
|
|
|
sel.append(" AND wey.CFStartDate = CONVERT(date, '").append(startPeriodDateStr).append("')");
|
|
sel.append(" AND wey.CFStartDate = CONVERT(date, '").append(startPeriodDateStr).append("')");
|
|
|
sel.append(" AND wey.CFEndDate = CONVERT(date, '").append(endPeriodDateStr).append("')");
|
|
sel.append(" AND wey.CFEndDate = CONVERT(date, '").append(endPeriodDateStr).append("')");
|
|
|
- // 筛选条件:占用周期与查询周期重叠(SQL Server用CONVERT替代to_char)
|
|
|
|
|
|
|
+ // 绛涢€夋潯浠讹細鍗犵敤鍛ㄦ湡涓庢煡璇㈠懆鏈熼噸鍙狅紙SQL Server鐢–ONVERT鏇夸唬to_char锛�
|
|
|
sel.append(" WHERE ");
|
|
sel.append(" WHERE ");
|
|
|
sel.append(" CONVERT(varchar(10), ops.CFCheckOutDate, 23) >= '").append(startPeriodDateStr).append("'");
|
|
sel.append(" CONVERT(varchar(10), ops.CFCheckOutDate, 23) >= '").append(startPeriodDateStr).append("'");
|
|
|
sel.append(" AND CONVERT(varchar(10), ops.CFCheckInDate, 23) <= '").append(endPeriodDateStr).append("'");
|
|
sel.append(" AND CONVERT(varchar(10), ops.CFCheckInDate, 23) <= '").append(endPeriodDateStr).append("'");
|
|
|
|
|
|
|
|
- // 账单ID筛选:若传入billids集合,追加IN条件(避免空集合报错)
|
|
|
|
|
|
|
+ // 璐﹀崟ID绛涢€夛細鑻ヤ紶鍏�illids闆嗗悎锛岃拷鍔營N鏉′欢锛堥伩鍏嶇┖闆嗗悎鎶ラ敊锛�
|
|
|
if (null != billids && (!billids.isEmpty())) {
|
|
if (null != billids && (!billids.isEmpty())) {
|
|
|
sel.append(" AND wey.fid IN ('') ");
|
|
sel.append(" AND wey.fid IN ('') ");
|
|
|
for (String id : billids) {
|
|
for (String id : billids) {
|
|
@@ -247,7 +247,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
sel.append(")");
|
|
sel.append(")");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 递归深度限制:10层足够覆盖日常树形(房间→楼栋→小区→...),避免异常
|
|
|
|
|
|
|
+ // 閫掑綊娣卞害闄愬埗锛�10灞傝冻澶熻�鐩栨棩甯告爲褰�紙鎴块棿鈫掓ゼ鏍嬧啋灏忓尯鈫�...锛夛紝閬垮厤寮傚父
|
|
|
sel.append(" OPTION (MAXRECURSION 10)");
|
|
sel.append(" OPTION (MAXRECURSION 10)");
|
|
|
|
|
|
|
|
System.out.println("getPersonWaterElectricitySql:" + sel);
|
|
System.out.println("getPersonWaterElectricitySql:" + sel);
|
|
@@ -267,7 +267,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取水电费详细集合
|
|
|
|
|
|
|
+ * 鑾峰彇姘寸數璐硅�缁嗛泦鍚�
|
|
|
*
|
|
*
|
|
|
* @param ctx
|
|
* @param ctx
|
|
|
* @param startPeriodDateStr
|
|
* @param startPeriodDateStr
|
|
@@ -290,17 +290,17 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
String pNumber = rs.getString("pNumber");
|
|
String pNumber = rs.getString("pNumber");
|
|
|
String opsid = rs.getString("opsid");
|
|
String opsid = rs.getString("opsid");
|
|
|
String InService = rs.getString("InService");
|
|
String InService = rs.getString("InService");
|
|
|
- Date checkInDate = rs.getDate("CFCheckInDate");//入住日期
|
|
|
|
|
- Date checkOutDate = rs.getDate("CFCheckOutDate");//离宿日期
|
|
|
|
|
- String dormitoryID = rs.getString("dormitoryID");//宿舍
|
|
|
|
|
- String wppid = rs.getString("wppid");//标准id
|
|
|
|
|
- Date startDate = rs.getDate("CFStartDate");//标准开始日期
|
|
|
|
|
- Date endDate = rs.getDate("CFEndDate");//标准结束日期
|
|
|
|
|
- BigDecimal waterprice = rs.getBigDecimal("CFWaterprice");//水费单价
|
|
|
|
|
|
|
+ Date checkInDate = rs.getDate("CFCheckInDate");//鍏ヤ綇鏃ユ湡
|
|
|
|
|
+ Date checkOutDate = rs.getDate("CFCheckOutDate");//绂诲�鏃ユ湡
|
|
|
|
|
+ String dormitoryID = rs.getString("dormitoryID");//瀹胯垗
|
|
|
|
|
+ String wppid = rs.getString("wppid");//鏍囧噯id
|
|
|
|
|
+ Date startDate = rs.getDate("CFStartDate");//鏍囧噯寮€濮嬫棩鏈�
|
|
|
|
|
+ Date endDate = rs.getDate("CFEndDate");//鏍囧噯缁撴潫鏃ユ湡
|
|
|
|
|
+ BigDecimal waterprice = rs.getBigDecimal("CFWaterprice");//姘磋垂鍗曚环
|
|
|
if (null==waterprice){
|
|
if (null==waterprice){
|
|
|
- throw new ShrWebBizException("没有找到水费电费标准单据,请在水电定价标准中维护!");
|
|
|
|
|
|
|
+ throw new ShrWebBizException("娌℃湁鎵惧埌姘磋垂鐢佃垂鏍囧噯鍗曟嵁锛岃�鍦ㄦ按鐢靛畾浠锋爣鍑嗕腑缁存姢锛�");
|
|
|
}
|
|
}
|
|
|
- BigDecimal electricityprice = rs.getBigDecimal("CFElectricityprice");//电费单价
|
|
|
|
|
|
|
+ BigDecimal electricityprice = rs.getBigDecimal("CFElectricityprice");//鐢佃垂鍗曚环
|
|
|
String wpmrid = rs.getString("wpmrid");
|
|
String wpmrid = rs.getString("wpmrid");
|
|
|
Date wpmrStartDate = rs.getDate("wpmrStartDate");
|
|
Date wpmrStartDate = rs.getDate("wpmrStartDate");
|
|
|
Date wpmrEndDate = rs.getDate("wpmrEndDate");
|
|
Date wpmrEndDate = rs.getDate("wpmrEndDate");
|
|
@@ -340,8 +340,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取人员入住详情
|
|
|
|
|
- *
|
|
|
|
|
|
|
+ * 鑾峰彇浜哄憳鍏ヤ綇璇︽儏
|
|
|
* @param we
|
|
* @param we
|
|
|
* @param periodDate
|
|
* @param periodDate
|
|
|
* @param pid
|
|
* @param pid
|
|
@@ -394,14 +393,14 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
String pNumber = (String) map.get("pNumber");
|
|
String pNumber = (String) map.get("pNumber");
|
|
|
String opsid = (String) map.get("opsid");
|
|
String opsid = (String) map.get("opsid");
|
|
|
String InService = (String) map.get("InService");
|
|
String InService = (String) map.get("InService");
|
|
|
- Date checkInDate = (Date) map.get("checkInDate");//入住日期
|
|
|
|
|
- Date checkOutDate = (Date) map.get("checkOutDate");//离宿日期
|
|
|
|
|
- String dormitoryID = (String) map.get("dormitoryID");//宿舍
|
|
|
|
|
- String wppid = (String) map.get("wppid");//标准id
|
|
|
|
|
- Date startDate = (Date) map.get("startDate");//标准开始日期
|
|
|
|
|
- Date endDate = (Date) map.get("endDate");//标准结束日期
|
|
|
|
|
- BigDecimal waterprice = (BigDecimal) map.get("waterprice");//水费单价
|
|
|
|
|
- BigDecimal electricityprice = (BigDecimal) map.get("electricityprice");//电费单价
|
|
|
|
|
|
|
+ Date checkInDate = (Date) map.get("checkInDate");//鍏ヤ綇鏃ユ湡
|
|
|
|
|
+ Date checkOutDate = (Date) map.get("checkOutDate");//绂诲�鏃ユ湡
|
|
|
|
|
+ String dormitoryID = (String) map.get("dormitoryID");//瀹胯垗
|
|
|
|
|
+ String wppid = (String) map.get("wppid");//鏍囧噯id
|
|
|
|
|
+ Date startDate = (Date) map.get("startDate");//鏍囧噯寮€濮嬫棩鏈�
|
|
|
|
|
+ Date endDate = (Date) map.get("endDate");//鏍囧噯缁撴潫鏃ユ湡
|
|
|
|
|
+ BigDecimal waterprice = (BigDecimal) map.get("waterprice");//姘磋垂鍗曚环
|
|
|
|
|
+ BigDecimal electricityprice = (BigDecimal) map.get("electricityprice");//鐢佃垂鍗曚环
|
|
|
String wpmrid = (String) map.get("wpmrid");
|
|
String wpmrid = (String) map.get("wpmrid");
|
|
|
Date wpmrStartDate = (Date) map.get("wpmrStartDate");
|
|
Date wpmrStartDate = (Date) map.get("wpmrStartDate");
|
|
|
Date wpmrEndDate = (Date) map.get("wpmrEndDate");
|
|
Date wpmrEndDate = (Date) map.get("wpmrEndDate");
|
|
@@ -416,7 +415,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
waterElectricityInfo = new WaterElectricityInfo();
|
|
waterElectricityInfo = new WaterElectricityInfo();
|
|
|
}
|
|
}
|
|
|
waterElectricityInfo.setSourceFunction(opsid);
|
|
waterElectricityInfo.setSourceFunction(opsid);
|
|
|
- //处理当月入住天数
|
|
|
|
|
|
|
+ //澶勭悊褰撴湀鍏ヤ綇澶╂暟
|
|
|
Map<String, Object> occupants = occupantsMap.get(dormitoryID);
|
|
Map<String, Object> occupants = occupantsMap.get(dormitoryID);
|
|
|
HROrgUnitInfo hrOrgUnitInfo = new HROrgUnitInfo();
|
|
HROrgUnitInfo hrOrgUnitInfo = new HROrgUnitInfo();
|
|
|
hrOrgUnitInfo.setId(BOSUuid.read("00000000-0000-0000-0000-000000000000CCE7AED4"));
|
|
hrOrgUnitInfo.setId(BOSUuid.read("00000000-0000-0000-0000-000000000000CCE7AED4"));
|
|
@@ -445,16 +444,19 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
positionInfo.setId(BOSUuid.read(primaryPositionID));
|
|
positionInfo.setId(BOSUuid.read(primaryPositionID));
|
|
|
waterElectricityInfo.setPosition(positionInfo);
|
|
waterElectricityInfo.setPosition(positionInfo);
|
|
|
Instant instant1 = startPeriodDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
|
|
Instant instant1 = startPeriodDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
|
|
|
- // 获取时间戳(毫秒)
|
|
|
|
|
|
|
+ // 鑾峰彇鏃堕棿鎴筹紙姣��锛�
|
|
|
long timestamp1 = instant1.toEpochMilli();
|
|
long timestamp1 = instant1.toEpochMilli();
|
|
|
waterElectricityInfo.setStartDate(new Date(timestamp1));
|
|
waterElectricityInfo.setStartDate(new Date(timestamp1));
|
|
|
Instant instant2 = endPeriodDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
|
|
Instant instant2 = endPeriodDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
|
|
|
- // 获取时间戳(毫秒)
|
|
|
|
|
|
|
+ // 鑾峰彇鏃堕棿鎴筹紙姣��锛�
|
|
|
long timestamp2 = instant2.toEpochMilli();
|
|
long timestamp2 = instant2.toEpochMilli();
|
|
|
waterElectricityInfo.setEndDate(new Date(timestamp2));
|
|
waterElectricityInfo.setEndDate(new Date(timestamp2));
|
|
|
waterElectricityInfo.setApplyDate(checkInDate);
|
|
waterElectricityInfo.setApplyDate(checkInDate);
|
|
|
PersonInfo applier = SHRBillUtil.getCurrPersonInfo();
|
|
PersonInfo applier = SHRBillUtil.getCurrPersonInfo();
|
|
|
waterElectricityInfo.setApplier(applier);
|
|
waterElectricityInfo.setApplier(applier);
|
|
|
|
|
+ //姘寸數鍗曚环
|
|
|
|
|
+ waterElectricityInfo.setWaterprice(waterprice);
|
|
|
|
|
+ waterElectricityInfo.setElectricityprice(electricityprice);
|
|
|
|
|
|
|
|
BOSUuid id = waterElectricityInfo.getId();
|
|
BOSUuid id = waterElectricityInfo.getId();
|
|
|
if (null == id) {
|
|
if (null == id) {
|
|
@@ -475,6 +477,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
resutMap.put("alls", alls);
|
|
resutMap.put("alls", alls);
|
|
|
resutMap.put("errs", errs);
|
|
resutMap.put("errs", errs);
|
|
|
resutMap.put("sess", sess);
|
|
resutMap.put("sess", sess);
|
|
@@ -482,7 +485,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 生成水电费明细
|
|
|
|
|
|
|
+ * 鐢熸垚姘寸數璐规槑缁�
|
|
|
*
|
|
*
|
|
|
* @param request
|
|
* @param request
|
|
|
* @param response
|
|
* @param response
|
|
@@ -501,7 +504,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
LocalDate startPeriodDate = LocalDate.parse(periodDate + "-01", DateTimeFormatter.ISO_LOCAL_DATE);
|
|
LocalDate startPeriodDate = LocalDate.parse(periodDate + "-01", DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
Month month = startPeriodDate.getMonth();
|
|
Month month = startPeriodDate.getMonth();
|
|
|
LocalDate endPeriodDate = LocalDate.of(startPeriodDate.getYear(), month, month.length(startPeriodDate.isLeapYear()));
|
|
LocalDate endPeriodDate = LocalDate.of(startPeriodDate.getYear(), month, month.length(startPeriodDate.isLeapYear()));
|
|
|
- //获取开始时间,结束时间
|
|
|
|
|
|
|
+ //鑾峰彇寮€濮嬫椂闂达紝缁撴潫鏃堕棿
|
|
|
String startPeriodDateStr = startPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
String startPeriodDateStr = startPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
String endPeriodDateStr = endPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
String endPeriodDateStr = endPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
Map<String, Object> param = Maps.newHashMap();
|
|
Map<String, Object> param = Maps.newHashMap();
|
|
@@ -511,14 +514,14 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
param.put("startPeriodDateStr", startPeriodDateStr);
|
|
param.put("startPeriodDateStr", startPeriodDateStr);
|
|
|
param.put("endPeriodDateStr", endPeriodDateStr);
|
|
param.put("endPeriodDateStr", endPeriodDateStr);
|
|
|
|
|
|
|
|
- //获取水电费详细集合
|
|
|
|
|
|
|
+ //鑾峰彇姘寸數璐硅�缁嗛泦鍚�
|
|
|
List<Map<String, Object>> mapList = this.getPersonWaterElectricityList(ctx, startPeriodDateStr, endPeriodDateStr, billids);
|
|
List<Map<String, Object>> mapList = this.getPersonWaterElectricityList(ctx, startPeriodDateStr, endPeriodDateStr, billids);
|
|
|
Set<String> dormitorySet = Sets.newHashSet();
|
|
Set<String> dormitorySet = Sets.newHashSet();
|
|
|
for (Map<String, Object> map : mapList) {
|
|
for (Map<String, Object> map : mapList) {
|
|
|
- String dormitoryID = (String) map.get("dormitoryID");//宿舍
|
|
|
|
|
|
|
+ String dormitoryID = (String) map.get("dormitoryID");//瀹胯垗
|
|
|
dormitorySet.add(dormitoryID);
|
|
dormitorySet.add(dormitoryID);
|
|
|
}
|
|
}
|
|
|
- //获取当前宿舍的总入住天数
|
|
|
|
|
|
|
+ //鑾峰彇褰撳墠瀹胯垗鐨勬€诲叆浣忓ぉ鏁�
|
|
|
Map<String, Map<String, Object>> occupantsMap = this.getPersonOccupantsList(ctx, dormitorySet, startPeriodDate, endPeriodDate);
|
|
Map<String, Map<String, Object>> occupantsMap = this.getPersonOccupantsList(ctx, dormitorySet, startPeriodDate, endPeriodDate);
|
|
|
Map<String, Set<String>> result = this.createUpdateWE(ctx, mapList, param, occupantsMap, "create");
|
|
Map<String, Set<String>> result = this.createUpdateWE(ctx, mapList, param, occupantsMap, "create");
|
|
|
this.returnMessage(request, batchMessageTipsHeader, result,billids);
|
|
this.returnMessage(request, batchMessageTipsHeader, result,billids);
|
|
@@ -527,9 +530,10 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
} catch (BOSException | EASBizException | SQLException e) {
|
|
} catch (BOSException | EASBizException | SQLException e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
|
- * 计算
|
|
|
|
|
|
|
+ * 璁$畻
|
|
|
{"startDate":
|
|
{"startDate":
|
|
|
{"values":{"date":"2025-04-01"},"isSaveToScheme":true,"dataType":"Date","queryDateType":""},
|
|
{"values":{"date":"2025-04-01"},"isSaveToScheme":true,"dataType":"Date","queryDateType":""},
|
|
|
"applyDate":
|
|
"applyDate":
|
|
@@ -563,7 +567,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
periodDate = periodDate.substring(0, 7);
|
|
periodDate = periodDate.substring(0, 7);
|
|
|
Month month = startPeriodDate.getMonth();
|
|
Month month = startPeriodDate.getMonth();
|
|
|
LocalDate endPeriodDate = LocalDate.of(startPeriodDate.getYear(), month, month.length(startPeriodDate.isLeapYear()));
|
|
LocalDate endPeriodDate = LocalDate.of(startPeriodDate.getYear(), month, month.length(startPeriodDate.isLeapYear()));
|
|
|
- //获取开始时间,结束时间
|
|
|
|
|
|
|
+ //鑾峰彇寮€濮嬫椂闂达紝缁撴潫鏃堕棿
|
|
|
String startPeriodDateStr = startPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
String startPeriodDateStr = startPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
String endPeriodDateStr = endPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
String endPeriodDateStr = endPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
Map<String, Object> param = Maps.newHashMap();
|
|
Map<String, Object> param = Maps.newHashMap();
|
|
@@ -573,14 +577,14 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
param.put("startPeriodDateStr", startPeriodDateStr);
|
|
param.put("startPeriodDateStr", startPeriodDateStr);
|
|
|
param.put("endPeriodDateStr", endPeriodDateStr);
|
|
param.put("endPeriodDateStr", endPeriodDateStr);
|
|
|
|
|
|
|
|
- //获取水电费详细集合
|
|
|
|
|
|
|
+ //鑾峰彇姘寸數璐硅�缁嗛泦鍚�
|
|
|
List<Map<String, Object>> mapList = this.getPersonWaterElectricityList(ctx, startPeriodDateStr, endPeriodDateStr, billids);
|
|
List<Map<String, Object>> mapList = this.getPersonWaterElectricityList(ctx, startPeriodDateStr, endPeriodDateStr, billids);
|
|
|
Set<String> dormitorySet = Sets.newHashSet();
|
|
Set<String> dormitorySet = Sets.newHashSet();
|
|
|
for (Map<String, Object> map : mapList) {
|
|
for (Map<String, Object> map : mapList) {
|
|
|
- String dormitoryID = (String) map.get("dormitoryID");//宿舍
|
|
|
|
|
|
|
+ String dormitoryID = (String) map.get("dormitoryID");//瀹胯垗
|
|
|
dormitorySet.add(dormitoryID);
|
|
dormitorySet.add(dormitoryID);
|
|
|
}
|
|
}
|
|
|
- //获取当前宿舍的总入住天数
|
|
|
|
|
|
|
+ //鑾峰彇褰撳墠瀹胯垗鐨勬€诲叆浣忓ぉ鏁�
|
|
|
Map<String, Map<String, Object>> occupantsMap = this.getPersonOccupantsList(ctx, dormitorySet, startPeriodDate, endPeriodDate);
|
|
Map<String, Map<String, Object>> occupantsMap = this.getPersonOccupantsList(ctx, dormitorySet, startPeriodDate, endPeriodDate);
|
|
|
Map<String, Set<String>> result = this.createUpdateWE(ctx, mapList, param, occupantsMap, "update");
|
|
Map<String, Set<String>> result = this.createUpdateWE(ctx, mapList, param, occupantsMap, "update");
|
|
|
this.returnMessage(request, batchMessageTipsHeader, result, billids);
|
|
this.returnMessage(request, batchMessageTipsHeader, result, billids);
|
|
@@ -602,7 +606,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
return TABLENAME;
|
|
return TABLENAME;
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
|
- * 锁定
|
|
|
|
|
|
|
+ * 閿佸畾
|
|
|
*
|
|
*
|
|
|
* @param request
|
|
* @param request
|
|
|
* @param response
|
|
* @param response
|
|
@@ -630,7 +634,7 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
return billId;
|
|
return billId;
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
|
- * 解锁
|
|
|
|
|
|
|
+ * 瑙i攣
|
|
|
*
|
|
*
|
|
|
* @param request
|
|
* @param request
|
|
|
* @param response
|
|
* @param response
|
|
@@ -667,11 +671,11 @@ public class WaterElectricityListHandler extends WaterElectricityBatchListHandle
|
|
|
state = conn.createStatement();
|
|
state = conn.createStatement();
|
|
|
if ("enable".equals(math)) {
|
|
if ("enable".equals(math)) {
|
|
|
|
|
|
|
|
- //薪酬锁定
|
|
|
|
|
|
|
+ //钖�叕閿佸畾
|
|
|
state.execute("update "+TABLENAME+" set FBillState='2' where fid='" + uuid + "' and FBillState < 2 ");
|
|
state.execute("update "+TABLENAME+" set FBillState='2' where fid='" + uuid + "' and FBillState < 2 ");
|
|
|
|
|
|
|
|
} else if ("disable".equals(math)) {
|
|
} else if ("disable".equals(math)) {
|
|
|
- //薪酬解锁
|
|
|
|
|
|
|
+ //钖�叕瑙i攣
|
|
|
state.execute("update "+TABLENAME+" set FBillState='0' where fid='" + uuid + "' and FBillState < 3 ");
|
|
state.execute("update "+TABLENAME+" set FBillState='0' where fid='" + uuid + "' and FBillState < 3 ");
|
|
|
}
|
|
}
|
|
|
} catch (SQLException var32) {
|
|
} catch (SQLException var32) {
|