Przeglądaj źródła

宿舍功能 - 计算水电明细逻辑修改(sqw)

sqw 6 dni temu
rodzic
commit
25fdfdf941

+ 8 - 4
code/opmcepaq/uzi9-uzi9q-opmcepaq-epaq/src/main/java/uzi9/uzi9q/opmcepaq/epaq/plugin/form/xbt/test/weinfor/form/weutil/WECostUtil.java

@@ -36,7 +36,7 @@ public class WECostUtil extends AbstractFormPlugin implements Plugin {
     /**
      * 获取人员宿舍 - 天数(个人 - 总)
      *
-     * @param personCheckLoad
+     * @param personCheckLoad todo
      */
 
     public static HashMap<Long, Double> getDormitoryStayTime(DynamicObject[] personCheckLoad, Date startTime, Date endTime) {
@@ -59,7 +59,7 @@ public class WECostUtil extends AbstractFormPlugin implements Plugin {
             }
 
             if (joining.before(startTime) && departure.before(endTime)) {
-                Double daysRounded = calculateTime(departure, joining);
+                Double daysRounded = calculateTime(departure, startTime);
                 dormitoryDate.merge(dormitory.getLong("id"), daysRounded, Double::sum);
             }
 
@@ -73,7 +73,7 @@ public class WECostUtil extends AbstractFormPlugin implements Plugin {
     }
 
     /**
-     * 获取人员宿舍 - 天数
+     * 获取人员宿舍 - 天数 todo
      *
      * @param
      */
@@ -82,18 +82,22 @@ public class WECostUtil extends AbstractFormPlugin implements Plugin {
         Date joining = personCheck.getDate("uzi9_date_joining");
         Date departure = personCheck.getDate("uzi9_departure_date");
 
+        //人员入住时间在统计开始时间之后,且离宿时间在统计结束时间之前
         if (joining.after(startTime) && departure.before(endTime)) {
             return calculateTime(departure, joining);
         }
 
+        //人员入住时间在统计开始时间之前,且离宿时间在统计结束时间之后
         if (joining.before(startTime) && departure.after(endTime)) {
             return calculateTime(endTime, startTime);
         }
 
+        //人员入住时间在统计开始时间之前,且离宿时间在统计结束时间之前
         if (joining.before(startTime) && departure.before(endTime)) {
-            return calculateTime(departure, joining);
+            return calculateTime(departure, startTime);
         }
 
+        //人员入住时间在统计开始时间之后,且离宿时间在统计结束时间之后
         if (joining.after(startTime) && departure.after(endTime)) {
             return calculateTime(endTime, joining);
         }

+ 12 - 2
code/opmcepaq/uzi9-uzi9q-opmcepaq-epaq/src/main/java/uzi9/uzi9q/opmcepaq/epaq/plugin/form/xbt/test/weinfor/list/WECostListPlugin.java

@@ -88,12 +88,21 @@ public class WECostListPlugin extends AbstractListPlugin implements Plugin {
 
         DynamicObject[] specialLoad = BusinessDataServiceHelper.load("uzi9_we_cost_special", "id,uzi9_personnel_info", new QFilter[]{qFilterTx});
 
-        Set<Long> specialCollect = Arrays.stream(specialLoad).map(special -> special.getLong("uzi9_personnel_info.id")).collect(Collectors.toSet());
+        //获取退宿申请单id
+        Set<Long> dormitoryCollect = Arrays.stream(specialLoad).map(special -> special.getLong("uzi9_personnel_info.id")).collect(Collectors.toSet());
+
+        qFilterTx = new QFilter("id",QCP.in,dormitoryCollect);
+
+        //查询退宿申请单
+        DynamicObject[] dormitoryLoad = BusinessDataServiceHelper.load("uzi9_retreat_dormitory", "id,uzi9_personnel", new QFilter[]{qFilterTx});
+
+        //入住人员信息id
+        Set<Long> specialCollect = Arrays.stream(dormitoryLoad).map(special -> special.getLong("uzi9_personnel.id")).collect(Collectors.toSet());
 
         //查询入住信息(去除在特殊水电明细单的人)
         QFilter qFilter = new QFilter("uzi9_departure_date", QCP.large_than, startDate)
                 .and("uzi9_date_joining", QCP.less_than, endDate)
-                .and("uzi9_personnel_info.id",QCP.not_in,specialCollect);
+                .and("id",QCP.not_in,specialCollect);
 
         DynamicObject[] personCheckLoad = BusinessDataServiceHelper.load("uzi9_check_personnel", "id,name,uzi9_personnel_info,group,uzi9_date_joining," +
                 "uzi9_departure_date,uzi9_number,uzi9_department,uzi9_position", new QFilter[]{qFilter});
@@ -181,6 +190,7 @@ public class WECostListPlugin extends AbstractListPlugin implements Plugin {
                 weChar.set("uzi9_date_joining", personCheck.get("uzi9_date_joining"));
                 weChar.set("uzi9_departure_date", personCheck.get("uzi9_departure_date"));
 
+                //当月入住天数
                 Double checkDays = WECostUtil.getDormitoryStayTime(personCheck, startDate, endDate);
                 weChar.set("uzi9_stay_days", checkDays);