Selaa lähdekoodia

账龄表添加过滤
定额档案表取值调整

fyz 3 viikkoa sitten
vanhempi
commit
f74b7fb5b1

+ 27 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/config/SchedulerConfig.java

@@ -0,0 +1,27 @@
+package com.malk.lanyun.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
+
+@Configuration
+public class SchedulerConfig {
+    @Bean
+    public ThreadPoolTaskScheduler taskScheduler() {
+        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
+        // 设置一个合理的线程池大小
+        scheduler.setPoolSize(10);
+        // 设置线程名前缀,方便排查问题
+        scheduler.setThreadNamePrefix("my-scheduled-");
+
+        // ************ 关键配置:开启优雅停机 ************
+        // 1. 等待所有任务执行完毕后再关闭容器
+        scheduler.setWaitForTasksToCompleteOnShutdown(true);
+        // 2. 设置一个最大等待时间(例如120秒),防止应用无限期卡住
+        scheduler.setAwaitTerminationSeconds(120);
+        // ********************************************
+
+        scheduler.initialize();
+        return scheduler;
+    }
+}

+ 2 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/schedule/ScheduleTask.java

@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
@@ -158,6 +159,7 @@ public class ScheduleTask {
     /**
      * 23点20分全量同步账龄表
      */
+    @Async
     @Scheduled(cron = "0 20 23 * * ?")
     void syncAgingTask(){
         log.info("全量同步账龄表");

+ 30 - 19
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/FImplService.java

@@ -210,6 +210,15 @@ public class FImplService implements FService {
     @Override
     @SneakyThrows
     public void syncAgingSchedule() {
+        List<Map> overList = ydService.queryFormData_all(_initLYParam()
+                .formUuid("FORM-EC785A5AB2B9432C892062823EB7C62A9NTL")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("radioField_m4qrz687", "是")))
+                .build());
+
+        Set<String> uuidSet = overList.stream()
+                .map(m -> (String) m.get("textField_m5297e3q"))
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
 
         List<Map> dataList = ydService.queryFormData_all(_initLYParam()
                 .formUuid("FORM-6603375ED27B4D059CBB919C2BEFA44BZVOL")
@@ -306,26 +315,28 @@ public class FImplService implements FService {
                         dataForm.put(key, UtilDateTime.format(new Date(kpzq), "yyyy-MM"));
                     }
                 }
-                String kpzq_wb = UtilDateTime.format(new Date(kpzq), "yyyy-MM");
-                List<Map> searchCondition = new ArrayList<>();
-                searchCondition.addAll(Arrays.asList(
-                        YDConf.searchCondition_TextFiled("textField_lvdosccc", UtilMap.getString(formData, "textField_lvdosccc"), "eq"),
-                        YDConf.searchCondition_TextFiled("selectField_lvc9x4vn", UtilMap.getString(formData, "selectField_lvc9x4vn"), "eq"),
-                        YDConf.searchCondition_TextFiled("textField_m25j5gxv", kpzq_wb, "eq"),
-                        YDConf.searchCondition_TextFiled("textField_m5aes96o", material, "eq"),
-                        YDConf.searchCondition_TextFiled("textField_m5297e3q", uuid, "eq")
-                ));
-                // 回款状态与未回款金额记录, 用于催款函查询
-                BigDecimal figure = BigDecimal.valueOf(UtilMap.getDouble(dataForm, "numberField_lvdnme0z")).subtract(BigDecimal.valueOf(UtilMap.getDouble(dataForm, "numberField_lvg084l9")));
-                dataForm.put("radioField_m4qrz687", BigDecimal.ZERO.compareTo(figure) == 0 ? "是" : "否");
-                dataForm.put("numberField_m4qrz685", figure);
+                if (!uuidSet.contains(uuid)){
+                    String kpzq_wb = UtilDateTime.format(new Date(kpzq), "yyyy-MM");
+                    List<Map> searchCondition = new ArrayList<>();
+                    searchCondition.addAll(Arrays.asList(
+                            YDConf.searchCondition_TextFiled("textField_lvdosccc", UtilMap.getString(formData, "textField_lvdosccc"), "eq"),
+                            YDConf.searchCondition_TextFiled("selectField_lvc9x4vn", UtilMap.getString(formData, "selectField_lvc9x4vn"), "eq"),
+                            YDConf.searchCondition_TextFiled("textField_m25j5gxv", kpzq_wb, "eq"),
+                            YDConf.searchCondition_TextFiled("textField_m5aes96o", material, "eq"),
+                            YDConf.searchCondition_TextFiled("textField_m5297e3q", uuid, "eq")
+                    ));
+                    // 回款状态与未回款金额记录, 用于催款函查询
+                    BigDecimal figure = BigDecimal.valueOf(UtilMap.getDouble(dataForm, "numberField_lvdnme0z")).subtract(BigDecimal.valueOf(UtilMap.getDouble(dataForm, "numberField_lvg084l9")));
+                    dataForm.put("radioField_m4qrz687", BigDecimal.ZERO.compareTo(figure) == 0 ? "是" : "否");
+                    dataForm.put("numberField_m4qrz685", figure);
 //                Thread.sleep(30); // QPS上限 40
-                ydClient.operateData(_initLYParam()
-                        .searchCondition(JSON.toJSONString(searchCondition))
-                        .formUuid("FORM-EC785A5AB2B9432C892062823EB7C62A9NTL")
-                        .formDataJson(JSON.toJSONString(dataForm))
-                        .useLatestVersion(true)
-                        .build(), YDConf.FORM_OPERATION.upsert_v2);
+                    ydClient.operateData(_initLYParam()
+                            .searchCondition(JSON.toJSONString(searchCondition))
+                            .formUuid("FORM-EC785A5AB2B9432C892062823EB7C62A9NTL")
+                            .formDataJson(JSON.toJSONString(dataForm))
+                            .useLatestVersion(true)
+                            .build(), YDConf.FORM_OPERATION.upsert_v2);
+                }
             }
         }
     }

+ 191 - 105
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/WorkServiceImpl.java

@@ -1,5 +1,6 @@
 package com.malk.lanyun.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
@@ -79,9 +80,9 @@ public class WorkServiceImpl implements WorkService {
         Date endOfMonth = DateUtil.endOfMonth(DateUtil.date());
         String[] dateList = new String[2];
         dateList[0] = String.valueOf(beginOfMonth.getTime());
-//        dateList[0] = String.valueOf(1755705600000L);
+//        dateList[0] = String.valueOf(1767196800000L);
         dateList[1] = String.valueOf(endOfMonth.getTime());
-//        dateList[1] = String.valueOf(1755791999000L);
+//        dateList[1] = String.valueOf(1769875199000L);
         //获取当月所有报工单
         List<Map> dataList = ydService.queryFormData_all(_initLYParam()
                 .formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
@@ -99,27 +100,30 @@ public class WorkServiceImpl implements WorkService {
                     .formUuid("FORM-886B38D31DA144C2B384BD23C3D13126QSK3")
                     .tableFieldId("tableField_lrn734ib")
                     .build());
-            distributeSonList.forEach(s->{
-                String emp = s.get("employeeField_lrs3k7zx").toString();
-                JSONArray jsonArray = JSONArray.parseArray(emp);
-                Map<String, Object> map = UtilMap.map("emp, amount", jsonArray.get(0), s.get("numberField_lvkm787c_value"));
-                distributes.add(map);
-            });
-            distributeSonList = ydService.queryDetails(_initLYParam()
-                    .formInstanceId(e.get("formInstanceId").toString())
-                    .formUuid("FORM-886B38D31DA144C2B384BD23C3D13126QSK3")
-                    .tableFieldId("tableField_m9j7tdn7")
-                    .build());
-            distributeSonList.forEach(s->{
-                String emp = s.get("textField_mad9s638").toString();
-                Map<String, Object> map = UtilMap.map("emp, amount",emp, s.get("numberField_m9j7tdn4_value"));
-                distributes.add(map);
-            });
+            String unit = UtilMap.getString(e, "textField_mlex61af");
+            if (!unit.isEmpty() && ObjectUtil.isNotNull(unit)){
+                distributeSonList.forEach(s->{
+                    String emp = s.get("employeeField_lrs3k7zx").toString();
+                    JSONArray jsonArray = JSONArray.parseArray(emp);
+                    Map<String, Object> map = UtilMap.map("emp, amount, unit", jsonArray.get(0), s.get("numberField_lvkm787c_value"),unit);
+                    distributes.add(map);
+                });
+                distributeSonList = ydService.queryDetails(_initLYParam()
+                        .formInstanceId(e.get("formInstanceId").toString())
+                        .formUuid("FORM-886B38D31DA144C2B384BD23C3D13126QSK3")
+                        .tableFieldId("tableField_m9j7tdn7")
+                        .build());
+                distributeSonList.forEach(s->{
+                    String emp = s.get("textField_mad9s638").toString();
+                    Map<String, Object> map = UtilMap.map("emp, amount, unit",emp, s.get("numberField_m9j7tdn4_value"),unit);
+                    distributes.add(map);
+                });
+            }
         });
 
         Map<String, Map<String, Object>> collect = distributes.stream()
                 .collect(Collectors.groupingBy(
-                                map -> String.valueOf(map.get("emp")),
+                                map -> map.get("emp") + "," + map.get("unit"),
                                 Collectors.collectingAndThen(
                                         Collectors.toList(),
                                         list -> {
@@ -157,10 +161,10 @@ public class WorkServiceImpl implements WorkService {
             //第二步,获取工程订单合同总金额,已在报工单中——numberField_luz7kj3p
             //第三步,遍历三个人员子表分别统计
 
-            List<Map<String,Object>> dataForm = new ArrayList<>();
 
             Double finalSum = sum;
             v.forEach(g->{
+                List<Map<String,Object>> dataForm = new ArrayList<>();
                 //合同总金额
                 Double amount = Double.parseDouble(ObjectUtil.isNotNull(g.get("numberField_luz7kj3p_value"))&& !g.get("numberField_luz7kj3p_value").toString().isEmpty()?g.get("numberField_luz7kj3p_value").toString():"0.0");
                 //负责人
@@ -184,17 +188,19 @@ public class WorkServiceImpl implements WorkService {
                         //人员
                         String emp = e.get("employeeField_lrs3k7zx").toString();
                         JSONArray jsonArray = JSONArray.parseArray(emp);
-                        //工时
-                        Double workHours = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn7frho_value")) && !e.get("numberField_lrn7frho_value").toString().isEmpty() ? e.get("numberField_lrn7frho_value").toString() : "0.0");
-                        //人均产值
-                        double avg = amount / finalSum * workHours;
-                        //内包/非内包
-                        String type = ObjectUtil.isNotNull(e.get("selectField_mfmkxzbk"))?e.get("selectField_mfmkxzbk").toString():"非内包";
-                        //日期 施工单位 施工内容 姓名 定点 负责人 总工时 工时 计件金额 内包 人均产值 总额 备注
-                        Map<String, Object> map = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, textField_mfmbs72m, employeeField_mfmbs72q, numberField_mfmbs72s, " +
-                                        "numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
-                                workDate, workFrom, workContent, jsonArray.get(0), "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "内协",type,k);
-                        dataForm.add(map);
+                        if (ObjectUtil.isNotNull(jsonArray.get(0))){
+                            //工时
+                            Double workHours = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn7frho_value")) && !e.get("numberField_lrn7frho_value").toString().isEmpty() ? e.get("numberField_lrn7frho_value").toString() : "0.0");
+                            //人均产值
+                            double avg = amount / finalSum * workHours;
+                            //内包/非内包
+                            String type = ObjectUtil.isNotNull(e.get("selectField_mfmkxzbk"))?e.get("selectField_mfmkxzbk").toString():"非内包";
+                            //日期 施工单位 施工内容 姓名 定点 负责人 总工时 工时 计件金额 内包 人均产值 总额 备注
+                            Map<String, Object> map = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, textField_mfmbs72m, employeeField_mfmbs72q, numberField_mfmbs72s, " +
+                                            "numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
+                                    workDate, workFrom, workContent, jsonArray.get(0), "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "直属队",type,k);
+                            dataForm.add(map);
+                        }
                     });
                 }
                 //外协人员名单
@@ -207,17 +213,20 @@ public class WorkServiceImpl implements WorkService {
                     outList.forEach(e->{
                         //人员
                         String emp = e.get("textField_lte7odks").toString();
-                        //工时
-                        Double workHours = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn7frhx_value")) && !e.get("numberField_lrn7frhx_value").toString().isEmpty() ? e.get("numberField_lrn7frhx_value").toString() : "0.0");
-                        //人均产值
-                        double avg = amount / finalSum * workHours;
-                        //内包/非内包
-                        String type = ObjectUtil.isNotNull(e.get("selectField_mfmkxzbm"))?e.get("selectField_mfmkxzbm").toString():"非内包";
-                        //日期 施工单位 施工内容 姓名 定点 负责人 总工时 工时 计件金额 内包 人均产值 总额 备注
-                        Map<String, Object> map = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, textField_mfmbs72m, employeeField_mfmbs72q, numberField_mfmbs72s, " +
-                                        "numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
-                                workDate, workFrom, workContent, emp, "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "内协",type,k);
-                        dataForm.add(map);
+                        if (!emp.isEmpty()){
+                            //工时
+                            Double workHours = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn7frhx_value")) && !e.get("numberField_lrn7frhx_value").toString().isEmpty() ? e.get("numberField_lrn7frhx_value").toString() : "0.0");
+                            //人均产值
+                            double avg = amount / finalSum * workHours;
+                            //内包/非内包
+                            String type = ObjectUtil.isNotNull(e.get("selectField_mfmkxzbm"))?e.get("selectField_mfmkxzbm").toString():"非内包";
+                            //日期 施工单位 施工内容 姓名 定点 负责人 总工时 工时 计件金额 内包 人均产值 总额 备注
+                            Map<String, Object> map = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, textField_mfmbs72m, employeeField_mfmbs72q, numberField_mfmbs72s, " +
+                                            "numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
+                                    workDate, workFrom, workContent, emp, "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "外协",type,k);
+                            dataForm.add(map);
+                        }
+
                     });
                 }
                 //内协人员名单
@@ -230,38 +239,68 @@ public class WorkServiceImpl implements WorkService {
                     inList.forEach(e->{
                         //人员
                         String emp = UtilMap.getList(e,"employeeField_lrs3k7zz").size()>0?UtilMap.getList(e,"employeeField_lrs3k7zz").get(0).toString():"";
-                        //工时
-                        Double workHours = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn7fric_value")) && !e.get("numberField_lrn7fric_value").toString().isEmpty() ? e.get("numberField_lrn7fric_value").toString() : "0.0");
-                        //人均产值
-                        double avg = amount / finalSum * workHours;
-                        //内包/非内包
-                        String type = ObjectUtil.isNotNull(e.get("selectField_mfmkxzbo"))?e.get("selectField_mfmkxzbo").toString():"非内包";
-                        //日期 施工单位 施工内容 姓名 定点 负责人 总工时 工时 计件金额 内包 人均产值 总额 备注
-                        Map<String, Object> map = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, textField_mfmbs72m, employeeField_mfmbs72q, numberField_mfmbs72s, " +
-                                        "numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
-                                workDate, workFrom, workContent, emp, "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "内协",type, k);
-                        dataForm.add(map);
+                        if (!emp.isEmpty()){
+                            //工时
+                            Double workHours = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn7fric_value")) && !e.get("numberField_lrn7fric_value").toString().isEmpty() ? e.get("numberField_lrn7fric_value").toString() : "0.0");
+                            //人均产值
+                            double avg = amount / finalSum * workHours;
+                            //内包/非内包
+                            String type = ObjectUtil.isNotNull(e.get("selectField_mfmkxzbo"))?e.get("selectField_mfmkxzbo").toString():"非内包";
+                            //日期 施工单位 施工内容 姓名 定点 负责人 总工时 工时 计件金额 内包 人均产值 总额 备注
+                            Map<String, Object> map = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, textField_mfmbs72m, employeeField_mfmbs72q, numberField_mfmbs72s, " +
+                                            "numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
+                                    workDate, workFrom, workContent, emp, "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "内协",type, k);
+                            dataForm.add(map);
+                        }
+
                     });
                 }
 
                 dataForm.forEach(e->{
-                    System.out.println(e);
+                    long startTimestamp = 0;
+                    long endTimestamp = 0;
+                    try {
+                        long timestamp = Long.parseLong(UtilMap.getString(e, "dateField_mfmbs72j"));
+                        DateTime dateTime = DateUtil.date(timestamp);
+                        // 获取当天开始时间(0点0分0秒0毫秒)
+                        DateTime beginOfDay = DateUtil.beginOfDay(dateTime);
+                        // 获取当天结束时间(23点59分59秒999毫秒)
+                        DateTime endOfDay = DateUtil.endOfDay(dateTime);
+                        // 转换为时间戳(毫秒)
+                        startTimestamp = beginOfDay.getTime();
+                        endTimestamp = endOfDay.getTime();
+                    } catch (NumberFormatException ex) {
+                        log.info("获取施工日期出错,施工日期为空");
+                        System.out.println("获取施工日期出错,施工日期为空"+e);
+                        ex.printStackTrace();
+                    }
                     collect.forEach((k0,v0)->{
-                        if (e.get("textField_mfmbs72k").toString().contains(k0)){
+                        String[] split = k0.split(",");
+                        if (e.get("textField_mfmbs72k").toString().contains(split[0]) && split[1].equals(UtilMap.getString(e,"textField_mfmbs72h"))){
                             if ("内包".equals(e.get("textField_mfmbs72x"))){
-                                e.put("numberField_mfmbs72v",v0.get("amountSum"));
+                                e.put("numberField_mfmbs72v",UtilMap.getDouble(v0,"amountSum") / finalSum * UtilMap.getDouble(e,"numberField_mfmbs72u"));
                                 return;
                             }
                         }
                     });
+//                    List<Map> searchCondition = new ArrayList<>();
+//                    searchCondition.addAll(Arrays.asList(
+//                            YDConf.searchCondition_TextFiled("dateField_mfmbs72j", Arrays.asList(String.valueOf(startTimestamp),String.valueOf(endTimestamp)), "between"),
+//                            YDConf.searchCondition_TextFiled("textField_mfmbs72h", UtilMap.getString(e, "textField_mfmbs72h"), "eq"),
+//                            YDConf.searchCondition_TextFiled("textField_mfmbs72k", UtilMap.getString(e, "textField_mfmbs72k"), "eq")
+//                    ));
+
+                    System.out.println(e);
                     ydClient.operateData(YDParam.builder()
                             .appType("APP_FKRD7416H19LDAIN348Y")
                             .systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
                             .formUuid("FORM-A3E6A06628024EC183BDF295C9BDD42BNZ5Y")
-                            .searchCondition(JSON.toJSONString(UtilMap.map("dateField_mfmbs72j, textField_mfmbs72k", dateList, e.get("textField_mfmbs72k"))))
+//                            .searchCondition(JSON.toJSONString(searchCondition))
+                            .searchCondition(JSON.toJSONString(UtilMap.map("dateField_mfmbs72j, textField_mfmbs72k, textField_mfmbs72h",
+                                    Arrays.asList(String.valueOf(startTimestamp),String.valueOf(endTimestamp)), e.get("textField_mfmbs72k"),UtilMap.getString(e, "textField_mfmbs72h"))))
                             .formDataJson(JSON.toJSONString(e))
                             .useLatestVersion(true)
-                            .build(), YDConf.FORM_OPERATION.create);
+                            .build(), YDConf.FORM_OPERATION.upsert);
                 });
             });
         });
@@ -630,24 +669,37 @@ public class WorkServiceImpl implements WorkService {
                                 Collectors.toList(),
                                 list -> {
                                     //社保公积金补贴
+//                                    double sbgjj = list.stream()
+//                                            .mapToDouble(map -> ((Number) (UtilMap.getDouble(map,"numberField_kp1tzw9")
+//                                                    + UtilMap.getDouble(map, "numberField_lixe8q3")
+//                                                    + UtilMap.getDouble(map, "numberField_x4wvwkm")
+//                                            )).doubleValue())
+//                                            .sum();
                                     double sbgjj = list.stream()
-                                            .mapToDouble(map -> ((Number) (UtilMap.getDouble(map,"numberField_kp1tzw9")
-                                                    + UtilMap.getDouble(map, "numberField_lixe8q3")
-                                                    + UtilMap.getDouble(map, "numberField_x4wvwkm")
-                                            )).doubleValue())
+                                            .mapToDouble(map ->
+                                                    ((Number) UtilMap.getDouble(map, "numberField_x4wvwkm_value")
+                                            ).doubleValue())
                                             .sum();
                                     //小业主费用
+//                                    double xyzfy = list.stream()
+//                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_ueon7nr_value").toString().isEmpty() ? map.get("numberField_ueon7nr_value").toString() : "0.0")).doubleValue())
+//                                            .sum();
                                     double xyzfy = list.stream()
-                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_ueon7nr_value").toString().isEmpty() ? map.get("numberField_ueon7nr_value").toString() : "0.0")).doubleValue())
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_m4zqwcsb_value").toString().isEmpty() ? map.get("numberField_m4zqwcsb_value").toString() : "0.0")).doubleValue())
                                             .sum();
                                     //应发工资A
                                     double yfgzA = list.stream()
                                             .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_bjzkeii_value").toString().isEmpty() ? map.get("numberField_bjzkeii_value").toString() : "0.0")).doubleValue())
                                             .sum();
                                     //甲方奖励
-                                    double jfjl = list.stream()
-                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_xn39ty3_value").toString().isEmpty() ? map.get("numberField_xn39ty3_value").toString() : "0.0")).doubleValue())
+//                                    double jfjl = list.stream()
+//                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_xn39ty3_value").toString().isEmpty() ? map.get("numberField_xn39ty3_value").toString() : "0.0")).doubleValue())
+//                                            .sum();
+                                     double jfjl = list.stream()
+                                            .mapToDouble(map -> ((Number) (UtilMap.getDouble(map,"numberField_m4zqwcs4_value")
+                                            + UtilMap.getDouble(map,"numberField_m4zqwcs2_value"))).doubleValue())
                                             .sum();
+
                                     //外派工资
                                     double wpgz = list.stream()
                                             .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_apmcuk2_value").toString().isEmpty() ? map.get("numberField_apmcuk2_value").toString() : "0.0")).doubleValue())
@@ -656,12 +708,22 @@ public class WorkServiceImpl implements WorkService {
                                     double jxgz = list.stream()
                                             .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_765hruk_value").toString().isEmpty() ? map.get("numberField_765hruk_value").toString() : "0.0")).doubleValue())
                                             .sum();
+                                    //人事扣款执行
+                                    double rskkzx = list.stream()
+                                            .mapToDouble(map -> ((Number) (UtilMap.getDouble(map,"numberField_rbnagms")//缺勤扣款
+                                                    + UtilMap.getDouble(map,"numberField_qp5294m")//考勤扣款
+                                                    + UtilMap.getDouble(map,"numberField_apnua9m")//处罚
+                                                    + UtilMap.getDouble(map,"numberField_5e60l5f")//其它扣款
+                                                    + UtilMap.getDouble(map,"numberField_m4zqwctp"))//其它扣款(营运浮动)
+                                            ).doubleValue())
+                                            .sum();
                                     return new HashMap<String, Object>() {{
                                         put("numberField_mfenmehu", sbgjj);
                                         put("numberField_mfenmehv", xyzfy);
                                         put("numberField_mfenmehx", yfgzA);
                                         put("numberField_mfenmehz", jfjl);
-                                        put("numberField_mfenmei1", wpgz);
+//                                        put("numberField_mfenmei1", wpgz);
+                                        put("numberField_mfenmehy", wpgz);
                                         put("numberField_mfenmei3", jxgz);
                                         put("numberField_mfenmehw", sbgjj + xyzfy);//定额工资(未加人工定额)
                                         put("numberField_mfenmei5", yfgzA - jfjl + wpgz + jxgz);//调整后应发工资(未加生产成本-业务外包费)
@@ -1230,42 +1292,55 @@ public class WorkServiceImpl implements WorkService {
                 Double htrs = UtilMap.getDouble(dataMap, "numberField_mfo3dvpy");//合同人数C
                 Double rgjy = UtilMap.getDouble(dataMap, "numberField_mfenmei6");//人工结余Z
                 Double jybl1 = UtilMap.getDouble(dataMap, "numberField_mfenmei7");//1-结余比例AA
-                if (rgjy == 0.0 && jybl1 == 0.0){
-                    dataMap.put("numberField_mfenmelq",25);
-                }else if (rgjy > 0.0 && rgjy < 200 && jybl1 > 0.0) {
-                    dataMap.put("numberField_mfenmelq",25);
-                }else if (rgjy < 0 && jybl1 > -5 && jybl1 < 0) {
-                    dataMap.put("numberField_mfenmelq",10);
-                }else if (rgjy < 0 && jybl1 < -5){
-                    dataMap.put("numberField_mfenmelq",0);
-                } else if (rgjy >= 200 && htrs >= 0 && htrs <= 30) {
-                    if (rgjy / 200 > 25){
-                        dataMap.put("numberField_mfenmelq",45);
-                    }else {
-                        dataMap.put("numberField_mfenmelq",rgjy / 200 + 25);
-                    }
-                } else if (rgjy >= 200 && htrs >= 31 && htrs <= 50) {
-                    if (rgjy / 400 > 25){
-                        dataMap.put("numberField_mfenmelq",45);
-                    }else {
-                        dataMap.put("numberField_mfenmelq",rgjy / 400 + 25);
-                    }
-                } else if (rgjy >= 200 && htrs >= 51 && htrs <= 70) {
-                    if (rgjy / 600 > 25){
-                        dataMap.put("numberField_mfenmelq",45);
+                Double rgdcl =UtilMap.getDouble(dataMap,"numberField_mfenmehw") == 0.0 ? 0 :
+                        UtilMap.getDouble(dataMap,"numberField_mfenmei5") / UtilMap.getDouble(dataMap,"numberField_mfenmehw");//人工达成率
+                if (rgdcl < 1){
+                    if (25 * (1 + (1 - rgdcl)) > 10){
+                        dataMap.put("numberField_mfenmelq", 35);
                     }else {
-                        dataMap.put("numberField_mfenmelq",rgjy / 600 + 25);
-                    }
-                }
-                else if (rgjy >= 200 && htrs >= 71) {
-                    if (rgjy / 800 > 25){
-                        dataMap.put("numberField_mfenmelq",45);
-                    }else {
-                        dataMap.put("numberField_mfenmelq",rgjy / 800 + 25);
+                        dataMap.put("numberField_mfenmelq", 25 * (1 + (1 - rgdcl)));
                     }
                 }else {
-                    dataMap.put("numberField_mfenmelq",0);
+                    dataMap.put("numberField_mfenmelq", 0);
                 }
+                //前朝人工得分算法
+
+//                if (rgjy == 0.0 && jybl1 == 0.0){
+//                    dataMap.put("numberField_mfenmelq",25);
+//                }else if (rgjy > 0.0 && rgjy < 200 && jybl1 > 0.0) {
+//                    dataMap.put("numberField_mfenmelq",25);
+//                }else if (rgjy < 0 && jybl1 > -5 && jybl1 < 0) {
+//                    dataMap.put("numberField_mfenmelq",10);
+//                }else if (rgjy < 0 && jybl1 < -5){
+//                    dataMap.put("numberField_mfenmelq",0);
+//                } else if (rgjy >= 200 && htrs >= 0 && htrs <= 30) {
+//                    if (rgjy / 200 > 25){
+//                        dataMap.put("numberField_mfenmelq",45);
+//                    }else {
+//                        dataMap.put("numberField_mfenmelq",rgjy / 200 + 25);
+//                    }
+//                } else if (rgjy >= 200 && htrs >= 31 && htrs <= 50) {
+//                    if (rgjy / 400 > 25){
+//                        dataMap.put("numberField_mfenmelq",45);
+//                    }else {
+//                        dataMap.put("numberField_mfenmelq",rgjy / 400 + 25);
+//                    }
+//                } else if (rgjy >= 200 && htrs >= 51 && htrs <= 70) {
+//                    if (rgjy / 600 > 25){
+//                        dataMap.put("numberField_mfenmelq",45);
+//                    }else {
+//                        dataMap.put("numberField_mfenmelq",rgjy / 600 + 25);
+//                    }
+//                }
+//                else if (rgjy >= 200 && htrs >= 71) {
+//                    if (rgjy / 800 > 25){
+//                        dataMap.put("numberField_mfenmelq",45);
+//                    }else {
+//                        dataMap.put("numberField_mfenmelq",rgjy / 800 + 25);
+//                    }
+//                }else {
+//                    dataMap.put("numberField_mfenmelq",0);
+//                }
                 //实际费用 (工作服  非工作服  生产成本-租赁费   生产成本-折旧   设备维修)
                 dataMap.put("numberField_mfenmeip",UtilMap.getDouble(dataMap,"numberField_mfenmeim")
                         +  UtilMap.getDouble(dataMap,"numberField_mfenmeii")
@@ -1293,15 +1368,26 @@ public class WorkServiceImpl implements WorkService {
                 //2-评价得分(2-物料成本)
                 Double sjfy = UtilMap.getDouble(dataMap, "numberField_mfenmeip");//实际费用
                 Double jybl = UtilMap.getDouble(dataMap, "numberField_mfenmeit");//结余比例
-                if (jybl < 0 && jybl >= -4){
-                    dataMap.put("numberField_mfenmelr","10");
-                }else if (jybl < -4) {
-                    dataMap.put("numberField_mfenmelr","0");
-                }else if (jybl/0.0002 > 20) {
-                    dataMap.put("numberField_mfenmelr","40");
+                Double wldcl = UtilMap.getDouble(dataMap,"numberField_mfenmeih") == 0.0 ? 0.0 :
+                        UtilMap.getDouble(dataMap,"numberField_mfenmeii") / UtilMap.getDouble(dataMap,"numberField_mfenmeih");
+                if (wldcl < 1){
+                    if (20 * (1+(1-wldcl))>30){
+                        dataMap.put("numberField_mfenmelr",30);
+                    }
+                    dataMap.put("numberField_mfenmelr",20 * (1+(1-wldcl)));
                 }else {
-                    dataMap.put("numberField_mfenmelr",jybl/0.0002 + 20);
+                    dataMap.put("numberField_mfenmelr",0);
                 }
+                //前朝物料得分算法
+//                if (jybl < 0 && jybl >= -4){
+//                    dataMap.put("numberField_mfenmelr","10");
+//                }else if (jybl < -4) {
+//                    dataMap.put("numberField_mfenmelr","0");
+//                }else if (jybl/0.0002 > 20) {
+//                    dataMap.put("numberField_mfenmelr","40");
+//                }else {
+//                    dataMap.put("numberField_mfenmelr",jybl/0.0002 + 20);
+//                }
                 //结算金额-差额
                 dataMap.put("numberField_mfenmejs", UtilMap.getDouble(dataMap,"numberField_mfenmejr")
                         -  UtilMap.getDouble(dataMap,"numberField_mfenmejp"));