|
|
@@ -1,3 +1,4 @@
|
|
|
+
|
|
|
package com.kingdee.eas.custom.dormitorysystem.waterelectricity.handler;
|
|
|
|
|
|
import com.google.common.collect.Maps;
|
|
|
@@ -53,7 +54,7 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
this.successMessage = successMessage;
|
|
|
}
|
|
|
/**
|
|
|
- * 璁$畻姘寸數璐圭敤
|
|
|
+ * 计算水电费用
|
|
|
*
|
|
|
* @param waterElectricityInfo
|
|
|
* @param map
|
|
|
@@ -62,21 +63,21 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
*/
|
|
|
protected CoreBillBaseInfo calculateWaterElectricity(CoreBillBaseInfo waterElectricityInfo, Map<String, Object> map,
|
|
|
Map<String, Object> occupants) {
|
|
|
- BigDecimal waterprice = (BigDecimal) waterElectricityInfo.get("waterprice");//姘磋垂鍗曚环
|
|
|
- BigDecimal electricityprice = (BigDecimal) waterElectricityInfo.get("electricityprice");//鐢佃垂鍗曚环
|
|
|
+ BigDecimal waterprice = (BigDecimal) map.get("waterprice");//水费单价
|
|
|
+ BigDecimal electricityprice = (BigDecimal) map.get("electricityprice");//电费单价
|
|
|
BigDecimal curMonthWater = (BigDecimal) map.get("curMonthWater");
|
|
|
BigDecimal curMonthElecDegrees = (BigDecimal) map.get("curMonthElecDegrees");
|
|
|
|
|
|
LocalDate startPeriodDate = (LocalDate) map.get("startPeriodDate");
|
|
|
LocalDate endPeriodDate = (LocalDate) map.get("endPeriodDate");
|
|
|
|
|
|
- Date checkInDate = (Date) map.get("checkInDate");//鍏ヤ綇鏃ユ湡
|
|
|
+ Date checkInDate = (Date) map.get("checkInDate");//入住日期
|
|
|
|
|
|
- Date checkOutDate = (Date) map.get("checkOutDate");//绂诲�鏃ユ湡
|
|
|
+ Date checkOutDate = (Date) map.get("checkOutDate");//离宿日期
|
|
|
|
|
|
waterElectricityInfo.put("waterTotalCost",(waterprice.multiply(curMonthWater)));
|
|
|
waterElectricityInfo.put("electricityTotalCost",(electricityprice.multiply(curMonthElecDegrees)));
|
|
|
- //澶勭悊褰撴湀鍏ヤ綇澶╂暟
|
|
|
+ //处理当月入住天数
|
|
|
LocalDate checkInDateLocal = (new Date(checkInDate.getTime())).toInstant()
|
|
|
.atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
checkInDateLocal = (checkInDateLocal.compareTo(startPeriodDate) > 0 ? checkInDateLocal : startPeriodDate);
|
|
|
@@ -85,16 +86,16 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
.atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
checkOutDateLocal = (checkOutDateLocal.compareTo(endPeriodDate) < 0 ? checkOutDateLocal : endPeriodDate);
|
|
|
|
|
|
- long daysBetween = ChronoUnit.DAYS.between(checkInDateLocal, checkOutDateLocal);
|
|
|
+ long daysBetween = ChronoUnit.DAYS.between(checkInDateLocal, checkOutDateLocal)+1;
|
|
|
BigDecimal days = new BigDecimal((long) occupants.get("days"));
|
|
|
waterElectricityInfo.put("allMonthDays",(days));
|
|
|
waterElectricityInfo.put("monthDays",(new BigDecimal(daysBetween)));
|
|
|
- //? 褰撴湀姘磋垂锛氬�鑸嶇敤姘存€昏垂鐢�/瀹胯垗鍐呮墍鏈変汉鍛樺綋鏈堟€诲叆浣忓ぉ鏁�*璇ヤ汉鍛樺綋鍓嶅�鑸嶇殑鍏ヤ綇澶╂暟锛�
|
|
|
+ //? 当月水费:宿舍用水总费用/宿舍内所有人员当月总入住天数*该人员当前宿舍的入住天数;
|
|
|
BigDecimal monthWaterAmount = waterElectricityInfo.getBigDecimal("waterTotalCost")
|
|
|
.divide(days, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)
|
|
|
.multiply(waterElectricityInfo.getBigDecimal("MonthDays"));
|
|
|
waterElectricityInfo.put("monthWaterAmount",monthWaterAmount.setScale(2,BigDecimal.ROUND_HALF_UP));
|
|
|
- //? 褰撴湀鐢佃垂锛氬�鑸嶇敤鐢垫€昏垂鐢�/瀹胯垗鍐呮墍鏈変汉鍛樺綋鏈堟€诲叆浣忓ぉ鏁�*璇ヤ汉鍛樺綋鍓嶅�鑸嶇殑鍏ヤ綇澶╂暟锛�
|
|
|
+ //? 当月电费:宿舍用电总费用/宿舍内所有人员当月总入住天数*该人员当前宿舍的入住天数;
|
|
|
BigDecimal monthElectricityAmount = waterElectricityInfo.getBigDecimal("ElectricityTotalCost")
|
|
|
.divide(days, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)
|
|
|
.multiply(waterElectricityInfo.getBigDecimal("MonthDays"));
|
|
|
@@ -124,16 +125,16 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
billids.removeAll(sess);
|
|
|
request.setAttribute("billId", convertListToString(sess.toArray()));
|
|
|
if (null != errs && (!errs.isEmpty())) {
|
|
|
- this.addBatchMessageTips(errs, "涓洪攣瀹氱姸鎬佷笉鑳芥洿鏂�", batchMessageTipsHeader);
|
|
|
+ this.addBatchMessageTips(errs, "为锁定状态不能更新", batchMessageTipsHeader);
|
|
|
}
|
|
|
billids.removeAll(errs);
|
|
|
if (null != billids && (!billids.isEmpty())) {
|
|
|
- this.addBatchMessageTips(errs, "涓洪攣瀹氱姸鎬佷笉鑳芥洿鏂�", batchMessageTipsHeader);
|
|
|
+ this.addBatchMessageTips(errs, "为锁定状态不能更新", batchMessageTipsHeader);
|
|
|
}
|
|
|
}
|
|
|
/**
|
|
|
- * 鑾峰彇褰撳墠瀹胯垗鐨勬€诲叆浣忓ぉ鏁�
|
|
|
- * 瀹胯垗鍐呮墍鏈変汉鍛樺綋鏈堟€诲叆浣忓ぉ鏁�
|
|
|
+ * 获取当前宿舍的总入住天数
|
|
|
+ * 宿舍内所有人员当月总入住天数
|
|
|
*
|
|
|
* @param ctx
|
|
|
* @param dormitorys
|
|
|
@@ -147,12 +148,12 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
Collection<String> dormitorys, LocalDate startPeriodDate, LocalDate endPeriodDate
|
|
|
) throws BOSException, SQLException {
|
|
|
|
|
|
- //鑾峰彇寮€濮嬫椂闂达紝缁撴潫鏃堕棿
|
|
|
+ //获取开始时间,结束时间
|
|
|
String startPeriodDateStr = startPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
String endPeriodDateStr = endPeriodDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
|
|
|
|
|
Map<String, Map<String, Object>> occupantsMap = Maps.newHashMap();
|
|
|
- //澶勭悊褰撴湀鍏ヤ綇澶╂暟
|
|
|
+ //处理当月入住天数
|
|
|
StringBuilder selCunt = new StringBuilder();
|
|
|
selCunt.append(" select CFDormitoryID,CFPersonPositionID,CFCheckOutDate,CFCheckInDate from CT_OCC_Occupants ");
|
|
|
selCunt.append(" where to_char(CFCheckOutDate ,'yyyy-MM-dd') >= '" + startPeriodDateStr + "' ");
|
|
|
@@ -182,14 +183,14 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
.atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
InDate = (InDate.compareTo(startPeriodDate) > 0 ? InDate : startPeriodDate);
|
|
|
OutDate = (OutDate.compareTo(endPeriodDate) < 0 ? OutDate : endPeriodDate);
|
|
|
- long daysBetween = ChronoUnit.DAYS.between(InDate, OutDate);
|
|
|
+ long daysBetween = ChronoUnit.DAYS.between(InDate, OutDate)+1;
|
|
|
long days = (long) occupants.get("days");
|
|
|
occupants.put("days", days + daysBetween);
|
|
|
}
|
|
|
return occupantsMap;
|
|
|
}
|
|
|
/**
|
|
|
- * 閿佸畾
|
|
|
+ * 锁定
|
|
|
*
|
|
|
* @param request
|
|
|
* @param response
|
|
|
@@ -219,7 +220,7 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
while (rs.next()) {
|
|
|
String id = rs.getString("fid");
|
|
|
errs.add(id);
|
|
|
- this.addBatchMessageTip(id, "宸茬粡閿佸畾锛屼笉鑳藉啀娆¢攣瀹氥€�", batchMessageTipsHeader);
|
|
|
+ this.addBatchMessageTip(id, "已经锁定,不能再次锁定。", batchMessageTipsHeader);
|
|
|
}
|
|
|
sess.removeAll(errs);
|
|
|
for (String id : sess) {
|
|
|
@@ -247,7 +248,7 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 瑙i攣
|
|
|
+ * 解锁
|
|
|
*
|
|
|
* @param request
|
|
|
* @param response
|
|
|
@@ -277,7 +278,7 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
while (rs.next()) {
|
|
|
String id = rs.getString("fid");
|
|
|
errs.add(id);
|
|
|
- this.addBatchMessageTip(id, "钖�祫鏁版嵁宸茬粡閿佸畾锛屼笉鑳借В閿併€�", batchMessageTipsHeader);
|
|
|
+ this.addBatchMessageTip(id, "薪资数据已经锁定,不能解锁。", batchMessageTipsHeader);
|
|
|
}
|
|
|
sess.removeAll(errs);
|
|
|
for (String id : sess) {
|
|
|
@@ -336,7 +337,7 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
conn = EJBFactory.getQueryConnection(ctx);
|
|
|
state = conn.createStatement();
|
|
|
if ("enable".equals(math)) {
|
|
|
- //閿佸畾
|
|
|
+ //锁定
|
|
|
state.execute("update "+this.getTableName()+" set CFStutas='Lock' where fid='" + uuid + "'");
|
|
|
|
|
|
} else if ("disable".equals(math)) {
|
|
|
@@ -430,4 +431,5 @@ public abstract class WaterElectricityBatchListHandler extends CommonBatchListHa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|