fyz hai 2 meses
pai
achega
19720fd3bd

+ 490 - 4
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/WorkServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.malk.lanyun.service.WorkService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
@@ -19,9 +18,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -544,6 +542,494 @@ public class WorkServiceImpl implements WorkService {
 
     @Override
     public void quotaArchive() {
+        LocalDate currentDate = LocalDate.now();
+        YearMonth lastMonth = YearMonth.from(currentDate).minusMonths(1);
+        String formatLastMonth = lastMonth.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+        String formatNowMonth = currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+        // 获取月份的第一天
+        LocalDateTime firstDay = LocalDateTime.now().withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
+        // 获取月份的最后一天
+        LocalDateTime lastDay =  LocalDateTime.now().withDayOfMonth(LocalDate.now().lengthOfMonth())
+                .withHour(23).withMinute(59).withSecond(59).withNano(999999999);
+        // 转换回时间戳
+        long firstDayTimestamp = firstDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+        long lastDayTimestamp = lastDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
 
+        List<String> dateList = new ArrayList<>();
+        dateList.add(String.valueOf(firstDayTimestamp));
+        dateList.add(String.valueOf(lastDayTimestamp));
+        //项目点数据
+        List<Map> projectList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-97BA6C6C8C50416A9E5854F2F4B5C3F3R4WC")
+//                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lrr3rg6h", projectCode)))
+                .build());
+
+        //算薪结果表
+        List<Map> salaryList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-5F5A9EC778314542853426DC93AD474C6GWC")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_4lnxn1m",dateList)))
+                .build());
+
+        Map<String, Map<String, Object>> salarys = salaryList.stream().collect(
+                Collectors.groupingBy(
+                        map -> (String) map.get("textField_lr8loohg").toString(),
+                        Collectors.collectingAndThen(
+                                Collectors.toList(),
+                                list -> {
+                                    //企业社保
+                                    double qysb = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_420j7m8_value").toString().isEmpty() ? map.get("numberField_420j7m8_value").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    //企业公积金
+                                    double qygjj = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_528s4hl_value").toString().isEmpty() ? map.get("numberField_528s4hl_value").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    //社保公积金补贴
+                                    double sbgjj = list.stream()
+                                            .mapToDouble(map -> ((Number) (Double.parseDouble(!map.get("numberField_kp1tzw9_value").toString().isEmpty() ? map.get("numberField_kp1tzw9_value").toString() : "0.0")
+                                                    + Double.parseDouble(!map.get("numberField_lixe8q3_value").toString().isEmpty() ? map.get("numberField_lixe8q3_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())
+                                            .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())
+                                            .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())
+                                            .sum();
+                                    //绩效工资
+                                    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();
+                                    return new HashMap<String, Object>() {{
+                                        put("numberField_mfenmehs", qysb);
+                                        put("numberField_mfenmeht", qygjj);
+                                        put("numberField_mfenmehu", sbgjj);
+                                        put("numberField_mfenmehv", xyzfy);
+                                        put("numberField_mfenmehx", yfgzA);
+                                        put("numberField_mfenmehz", jfjl);
+                                        put("numberField_mfenmei1", wpgz);
+                                        put("numberField_mfenmei3", jxgz);
+                                        put("numberField_mfenmehw", qysb + qygjj + sbgjj + xyzfy);//定额工资(未加人工定额)
+                                        put("numberField_mfenmei5", yfgzA - jfjl + wpgz + jxgz + qysb + qygjj);//调整后应发工资(未加生产成本-业务外包费)
+                                        put("rgzbfz", yfgzA + wpgz + jxgz + qysb + qygjj + sbgjj);//人工占比分子
+                                    }};
+                                }
+                        )
+                )
+        );
+        //NC生产成本(取宜搭NC部门成本表)
+        List<Map> productionCostList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-5654B7C22E7546E9BBE7B4EF46DE08BAXZXU")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_m0dkzhwp",dateList)))
+                .build());
+
+        Map<String, Map<String, Object>> costCollect = productionCostList.stream().collect(
+                Collectors.groupingBy(
+                        //第一层根据项目
+                        map ->  map.get("textField_mbk7mt4q").toString(),
+                        Collectors.groupingBy(
+                                //第二层根据科目
+                                map ->  map.get("textField_m0dkzhwv").toString(),
+                                Collectors.collectingAndThen(
+                                        Collectors.toList(),
+                                        list -> {
+                                            //企业社保
+                                            double cost = list.stream()
+                                                    .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_m0dkzhx1_value").toString().isEmpty() ? map.get("numberField_m0dkzhx1_value").toString() : "0.0")).doubleValue())
+                                                    .sum();
+                                            return new HashMap<String, Object>() {{
+                                                put("numberField_mfenmehs", cost);
+                                            }};
+                                        }
+                                )
+                        )
+                )
+        );
+        //采购订单档案
+        List<Map> orderList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-61F329A9DFFE4CF0BBEC0FDC34C42C03QJKQ")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lr26l3h2",dateList)))
+                .build());
+        List<Map> orderSons = new ArrayList<>();
+        orderList.forEach(o->{
+            List<Map> sonList = ydService.queryDetails(YDParam.builder().
+                    appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(o.get("formInstanceId").toString())
+                    .formUuid("FORM-61F329A9DFFE4CF0BBEC0FDC34C42C03QJKQ")
+                    .tableFieldId("tableField_lr26l3hl")
+                    .build());
+            sonList.forEach(s->{
+                Map<String, Object> map = UtilMap.map("name, wlname, amount", s.get("textField_lup89iah"), s.get("textField_lr26l3ht"), s.get("numberField_lr26l3i1_value"));
+                orderSons.add(map);
+            });
+            sonList = ydService.queryDetails(YDParam.builder().
+                    appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(o.get("formInstanceId").toString())
+                    .formUuid("FORM-61F329A9DFFE4CF0BBEC0FDC34C42C03QJKQ")
+                    .tableFieldId("tableField_ltxyt76f")
+                    .build());
+            sonList.forEach(s->{
+                Map<String, Object> map = UtilMap.map("name, wlname, amount", s.get("textField_lup89iag"), s.get("textField_ltxyt75x"), s.get("numberField_ltxyt764_value"));
+                orderSons.add(map);
+            });
+        });
+
+        //采购订单档案工作服数据
+        Map<String, HashMap<String, Object>> workCloCost = orderSons.stream().filter(m -> "工作服".equals(m.get("wlname"))).collect(
+                Collectors.groupingBy(
+                        //根据项目点名称
+                        map -> map.get("name").toString(),
+                        Collectors.collectingAndThen(
+                                Collectors.toList(),
+                                list -> {
+                                    //企业社保
+                                    double cost = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("amount").toString().isEmpty() ? map.get("amount").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    return new HashMap<String, Object>() {{
+                                        put("cost", cost);
+                                    }};
+                                }
+                        )
+                ));
+
+        //采购订单档案非工作服数据
+        Map<String, HashMap<String, Object>> workNoCloCost = orderSons.stream().filter(m -> !"工作服".equals(m.get("wlname"))).collect(
+                Collectors.groupingBy(
+                        //根据项目点名称
+                        map -> map.get("name").toString(),
+                        Collectors.collectingAndThen(
+                                Collectors.toList(),
+                                list -> {
+                                    //企业社保
+                                    double cost = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("amount").toString().isEmpty() ? map.get("amount").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    return new HashMap<String, Object>() {{
+                                        put("cost", cost);
+                                    }};
+                                }
+                        )
+                ));
+
+        //设备维修账单
+        List<Map> repairBillList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-3B7F64C7178D49008FFE37147CA4EC33Q309")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lrnaj34x",dateList)))
+                .build());
+        //设备维修账单数据
+        Map<String, HashMap<String, Object>> repairBillCost = repairBillList.stream().collect(
+                Collectors.groupingBy(
+                        //根据项目点编号
+                        map -> map.get("textField_m4wh44gk").toString(),
+                        Collectors.collectingAndThen(
+                                Collectors.toList(),
+                                list -> {
+                                    //企业社保
+                                    double cost = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_lv27wy70_value").toString().isEmpty() ? map.get("numberField_lv27wy70_value").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    return new HashMap<String, Object>() {{
+                                        put("cost", cost);
+                                    }};
+                                }
+                        )
+                ));
+
+        // 获取上月份的第一天
+        firstDay = LocalDateTime.now().plusMonths(-1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
+        // 获取上月份的最后一天
+        lastDay =  LocalDateTime.now().plusMonths(-1).withDayOfMonth(LocalDate.now().plusMonths(-1).lengthOfMonth())
+                .withHour(23).withMinute(59).withSecond(59).withNano(999999999);
+        // 转换回时间戳
+        firstDayTimestamp = firstDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+        lastDayTimestamp = lastDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+        dateList.clear();
+        dateList.add(String.valueOf(firstDayTimestamp));
+        dateList.add(String.valueOf(lastDayTimestamp));
+
+        //上月开票档案
+        List<Map> lastOpenList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-6603375ED27B4D059CBB919C2BEFA44BZVOL")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lw5ud9bk, selectField_lvc9x4vn",dateList,"小业主")))
+                .build());
+        //上月开票档案
+        Map<String, HashMap<String, Object>> lastOpens = lastOpenList.stream().collect(
+                Collectors.groupingBy(
+                        //根据项目点编号
+                        map -> map.get("textField_lvdntzul").toString(),
+                        Collectors.collectingAndThen(
+                                Collectors.toList(),
+                                list -> {
+                                    //企业社保
+                                    double open = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_lvd8pp36_value").toString().isEmpty() ? map.get("numberField_lvd8pp36_value").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    return new HashMap<String, Object>() {{
+                                        put("open", open);
+                                    }};
+                                }
+                        )
+                ));
+
+        // 获取上上月份的第一天
+        firstDay = LocalDateTime.now().plusMonths(-2).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
+        // 获取上上月份的最后一天
+        lastDay =  LocalDateTime.now().plusMonths(-2).withDayOfMonth(LocalDate.now().lengthOfMonth())
+                .withHour(23).withMinute(59).withSecond(59).withNano(999999999);
+        firstDayTimestamp = firstDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+        lastDayTimestamp = lastDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+        dateList.clear();
+        dateList.add(String.valueOf(firstDayTimestamp));
+        dateList.add(String.valueOf(lastDayTimestamp));
+
+        //上上月开票档案
+        List<Map> lastLastOpenList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-6603375ED27B4D059CBB919C2BEFA44BZVOL")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lw5ud9bk, selectField_lvc9x4vn",dateList,"小业主")))
+                .build());
+
+        //上月开票档案
+        Map<String, HashMap<String, Object>> lastLastOpens = lastLastOpenList.stream().collect(
+                Collectors.groupingBy(
+                        //根据项目点编号
+                        map -> map.get("textField_lvdntzul").toString(),
+                        Collectors.collectingAndThen(
+                                Collectors.toList(),
+                                list -> {
+                                    //企业社保
+                                    double open = list.stream()
+                                            .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_lvd8pp36_value").toString().isEmpty() ? map.get("numberField_lvd8pp36_value").toString() : "0.0")).doubleValue())
+                                            .sum();
+                                    return new HashMap<String, Object>() {{
+                                        put("open", open);
+                                    }};
+                                }
+                        )
+                ));
+        //数据整合处理
+        projectList.forEach(e->{
+            String name = e.get("textField_lrr3rg6i").toString();
+            String code = e.get("textField_ltxrn8h1").toString();
+            List<Map<String,Object>> objects = new ArrayList<>();
+            Map<String, Object> map = UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle",
+                    "APP_TKO2FYGFQYQQMQFUTUU5", "FORM-EA91EECA918848EA9EFFA87107B60BD0SLXX", "receipt",
+                    e.get("formInstanceId"), name, code);
+            objects.add(map);
+            Map<String, Object> dataMap = UtilMap.map("associationFormField_mfo3dvqa, textField_mfenmegp",
+                    objects, e.get("textField_ltxrn8h1"));
+            if (ObjectUtil.isNotNull(e.get("employeeField_lw1usgpt_id"))){
+                //项目点负责人
+                String xmdfzr = e.get("employeeField_lw1usgpt_id").toString();
+                JSONArray xmdfzrArray = JSONArray.parseArray(xmdfzr);
+                dataMap.put("employeeField_mfo3dvpt",xmdfzrArray.get(0));
+            }
+
+            if (ObjectUtil.isNotNull(e.get("employeeField_lrpswhaj_id"))){
+                //营运经理
+                String yyjl = e.get("employeeField_lrpswhaj_id").toString();
+                JSONArray yyjlArray = JSONArray.parseArray(yyjl);
+                dataMap.put("employeeField_mfo3dvq2",yyjlArray.get(0));
+            }
+            List<Map> sonList = ydService.queryDetails(YDParam.builder().
+                    appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(e.get("formInstanceId").toString())
+                    .formUuid("FORM-97BA6C6C8C50416A9E5854F2F4B5C3F3R4WC")
+                    .tableFieldId("tableField_lrru2tnq")
+                    .build());
+            //项目点档案子表本月
+            List<Map> sonFilterList = sonList.stream().filter(m -> formatNowMonth.equals(m.get("textField_luh0k82j"))).collect(Collectors.toList());
+            sonFilterList.forEach(s->{
+                //人工定额
+                double person = Double.parseDouble(ObjectUtil.isNotNull(s.get("numberField_lrru2tnt_value")) && !s.get("numberField_lrru2tnt_value").toString().isEmpty() ? s.get("numberField_lrru2tnt_value").toString() : "0.0");
+                //物料定额
+                double cost = Double.parseDouble(ObjectUtil.isNotNull(s.get("numberField_lrru2tnu_value")) && !s.get("numberField_lrru2tnu_value").toString().isEmpty() ? s.get("numberField_lrru2tnu_value").toString() : "0.0");
+                //收入定额
+                double income = Double.parseDouble(ObjectUtil.isNotNull(s.get("numberField_lrru2tns_value")) && !s.get("numberField_lrru2tns_value").toString().isEmpty() ? s.get("numberField_lrru2tns_value").toString() : "0.0");
+                //回款金额
+                double back = Double.parseDouble(ObjectUtil.isNotNull(s.get("numberField_lrru2to3_value")) && !s.get("numberField_lrru2to3_value").toString().isEmpty() ? s.get("numberField_lrru2to3_value").toString() : "0.0");
+                //工资定额分项
+                dataMap.put("numberField_mfenmehp",person);
+                //物料定额
+                dataMap.put("numberField_mfenmeih",cost);
+                //定额收入
+                dataMap.put("numberField_mfenmejp",income);
+                //回款金额
+                dataMap.put("numberField_mfenmek8",back);
+            });
+            //项目点档案子表上月
+            List<Map> sonLastMonthList = sonList.stream().filter(m -> formatLastMonth.equals(m.get("tableField_lrru2tnq"))).collect(Collectors.toList());
+            sonLastMonthList.forEach(s->{
+                //开票金额
+                double open = Double.parseDouble(ObjectUtil.isNotNull(s.get("numberField_lrru2to2_value")) && !s.get("numberField_lrru2to2_value").toString().isEmpty() ? s.get("numberField_lrru2to2_value").toString() : "0.0");
+                //开票金额
+                dataMap.put("numberField_mfenmejr",open);
+            });
+            //算薪结果表
+            salarys.forEach((k,v)->{
+                if (k.equals(name)){
+                    dataMap.putAll(v);
+                }
+            });
+
+            //遍历部门成本
+            costCollect.forEach((k0,v0)->{
+                if (k0.equals(name)){
+                    v0.forEach((k1,v1)->{
+                        if ("生产成本-业务外包费".equals(k1)){
+                            //劳务所临时工费用
+                            dataMap.put("numberField_mfenmei2",v1);
+                        }else if ("生产成本-租赁费".equals(k1)){
+                            //租赁
+                            dataMap.put("numberField_mfenmeil",v1);
+                        }else if ("生产成本-折旧".equals(k1)) {
+                            //折旧
+                            dataMap.put("numberField_mfenmeio", v1);
+                        }
+                    });
+                }
+            });
+            //劳防用品
+            workCloCost.forEach((k,v)->{
+                if (k.equals(name)){
+                    dataMap.put("numberField_mfenmeim",v);
+                }
+            });
+            //物耗(非工作服)
+            workNoCloCost.forEach((k,v)->{
+                if (k.equals(name)){
+                    dataMap.put("numberField_mfenmeii",v.get("cost"));
+                }
+            });
+            //设备维修
+            repairBillCost.forEach((k,v)->{
+                if (k.equals(code)){
+                    dataMap.put("numberField_mfenmeij",v.get("cost"));
+                }
+            });
+
+            double bzwhcb = Double.parseDouble(ObjectUtil.isNotNull(e.get("numberField_lrn2oy4q_value")) && !e.get("numberField_lrn2oy4q_value").toString().isEmpty() ? e.get("numberField_lrn2oy4q_value").toString() : "0.0");
+            if (bzwhcb == 0){
+                dataMap.put("numberField_mfenmekv",3);
+                dataMap.put("numberField_mfenmel9",2);
+            }
+
+            //上月小业主开票
+            lastOpens.forEach((k,v)->{
+                if (k.equals(name)){
+                    dataMap.put("numberField_mfenmelh",v.get("open"));
+                }
+            });
+            //上上月小业主开票
+            lastLastOpens.forEach((k,v)->{
+                if (k.equals(name)){
+                    dataMap.put("numberField_mfenmelg",v.get("open"));
+                }
+            });
+
+
+            //公式字段计算
+            //定额工资
+            dataMap.put("numberField_mfenmehw", UtilMap.getDouble(dataMap,"numberField_mfenmehw")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmehp"));
+            //调整后应发工资
+            dataMap.put("numberField_mfenmei5", UtilMap.getDouble(dataMap,"numberField_mfenmei5")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmei2"));
+            //人工结余
+            dataMap.put("numberField_mfenmei6", UtilMap.getDouble(dataMap,"numberField_mfenmehw")
+                    -  UtilMap.getDouble(dataMap,"numberField_mfenmei5"));
+            //人工占比
+            double fm = UtilMap.getDouble(dataMap,"numberField_mfenmejr")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmelh");
+            if (fm == 0){
+                dataMap.put("numberField_mfenmei4",0);
+            }else {
+                dataMap.put("numberField_mfenmei4", (UtilMap.getDouble(dataMap,"rgzbfz")
+                        + UtilMap.getDouble(dataMap,"numberField_mfenmei2")) / fm * 100);
+            }
+            //结余比例
+            if (UtilMap.getDouble(dataMap,"numberField_mfenmehw") == 0){
+                dataMap.put("numberField_mfenmei7",0);
+            }else {
+                dataMap.put("numberField_mfenmei7", UtilMap.getDouble(dataMap,"numberField_mfenmei6")
+                        /  UtilMap.getDouble(dataMap,"numberField_mfenmehw") * 100);
+            }
+            //实际费用 (工作服  非工作服  生产成本-租赁费   生产成本-折旧   设备维修)
+            dataMap.put("numberField_mfenmeip",UtilMap.getDouble(dataMap,"numberField_mfenmeim")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmeii")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmeil")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmeio")
+                    +  UtilMap.getDouble(dataMap,"numberField_mfenmeij"));
+            //物耗占比
+            if (UtilMap.getDouble(dataMap,"numberField_mfenmejr")  == 0){
+                dataMap.put("numberField_mfenmeir",0);
+            }else {
+                dataMap.put("numberField_mfenmeir", UtilMap.getDouble(dataMap,"numberField_mfenmeii")
+                        /  UtilMap.getDouble(dataMap,"numberField_mfenmejr") * 100);
+            }
+            //物料结余
+            dataMap.put("numberField_mfenmeis", UtilMap.getDouble(dataMap,"numberField_mfenmeih")
+                    -  UtilMap.getDouble(dataMap,"numberField_mfenmeii"));
+            //结余比例
+            if (UtilMap.getDouble(dataMap,"numberField_mfenmeih") == 0){
+                dataMap.put("numberField_mfenmeit",0);
+            }else {
+                dataMap.put("numberField_mfenmeit", UtilMap.getDouble(dataMap,"numberField_mfenmeis")
+                        /  UtilMap.getDouble(dataMap,"numberField_mfenmeih") * 100);
+            }
+            //结算金额-差额
+            dataMap.put("numberField_mfenmejs", UtilMap.getDouble(dataMap,"numberField_mfenmejr")
+                    -  UtilMap.getDouble(dataMap,"numberField_mfenmejp"));
+            //开票状态
+            if (ObjectUtil.isNotNull(dataMap.get("numberField_mfenmejr")) && Double.parseDouble(dataMap.get("numberField_mfenmejr").toString()) > 0){
+                dataMap.put("radioField_mfenmek0","已开票");
+            }else {
+                dataMap.put("radioField_mfenmek0","未开票");
+            }
+            //增长金额
+            dataMap.put("numberField_mfenmeli", UtilMap.getDouble(dataMap,"numberField_mfenmelh")
+                    -  UtilMap.getDouble(dataMap,"numberField_mfenmelg"));
+            //增长率
+            if (UtilMap.getDouble(dataMap,"numberField_mfenmelg") == 0 && UtilMap.getDouble(dataMap,"numberField_mfenmelh") >= 500){
+                dataMap.put("numberField_mfenmelj",100);
+            }else {
+                dataMap.put("numberField_mfenmelj", UtilMap.getDouble(dataMap,"numberField_mfenmeli")
+                        / UtilMap.getDouble(dataMap,"numberField_mfenmelg"));
+            }
+            ydClient.operateData(YDParam.builder()
+                    .appType("APP_TKO2FYGFQYQQMQFUTUU5")
+                    .systemToken("2IF66SC1XCSY45IUBXA0X9WYE09G3W8GGNEFM7T4")
+                    .formUuid("FORM-C17DA3AEA3064A3D9CA118BBB3116BF6NLUB")
+                    .searchCondition(JSON.toJSONString(UtilMap.map("dateField_mfo3dvpr, textField_mfenmegp", dateList, code)))
+                    .formDataJson(JSON.toJSONString(dataMap))
+                    .useLatestVersion(true)
+                    .build(), YDConf.FORM_OPERATION.upsert);
+        });
     }
 }