|
@@ -0,0 +1,336 @@
|
|
|
|
|
+package com.malk.lanyun.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
|
+import com.malk.lanyun.service.WorkService;
|
|
|
|
|
+import com.malk.server.aliwork.YDConf;
|
|
|
|
|
+import com.malk.server.aliwork.YDParam;
|
|
|
|
|
+import com.malk.service.aliwork.YDClient;
|
|
|
|
|
+import com.malk.service.aliwork.YDService;
|
|
|
|
|
+import com.malk.service.dingtalk.DDClient;
|
|
|
|
|
+import com.malk.service.dingtalk.DDClient_Personnel;
|
|
|
|
|
+import com.malk.utils.UtilMap;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+@Service
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class WorkServiceImpl implements WorkService {
|
|
|
|
|
+ @Value("${dingtalk.agentId}")
|
|
|
|
|
+ private Long agentId;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private YDService ydService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private YDClient ydClient;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private DDClient ddClient;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private DDClient_Personnel ddClientPersonnel;
|
|
|
|
|
+ private YDParam.YDParamBuilder _initLYParam() {
|
|
|
|
|
+ return YDParam.builder()
|
|
|
|
|
+ .appType("APP_ERBDTFS82HOVBPL3NFH0")
|
|
|
|
|
+ .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP");
|
|
|
|
|
+ }
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void getMonthWorkOrder() {
|
|
|
|
|
+ Date date = DateUtil.date();
|
|
|
|
|
+ Date beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
|
|
|
+ Date endOfMonth = DateUtil.endOfMonth(DateUtil.lastMonth());
|
|
|
|
|
+ String[] dateList = new String[2];
|
|
|
|
|
+ dateList[0] = String.valueOf(beginOfMonth.getTime());
|
|
|
|
|
+ dateList[1] = String.valueOf(endOfMonth.getTime());
|
|
|
|
|
+ //获取当月所有报工单
|
|
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(_initLYParam()
|
|
|
|
|
+ .formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
|
|
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lrn734i2", (Object) dateList)))
|
|
|
|
|
+ .build());
|
|
|
|
|
+
|
|
|
|
|
+ List<Map> distributeList = ydService.queryFormData_all(_initLYParam()
|
|
|
|
|
+ .formUuid("FORM-886B38D31DA144C2B384BD23C3D13126QSK3")
|
|
|
|
|
+ .build());
|
|
|
|
|
+ List<Map<String, Object>> distributes = new ArrayList<>();
|
|
|
|
|
+ distributeList.forEach(e->{
|
|
|
|
|
+ List<Map> distributeSonList = ydService.queryDetails(_initLYParam()
|
|
|
|
|
+ .formInstanceId(e.get("formInstanceId").toString())
|
|
|
|
|
+ .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("code, emp, amount", e.get("textField_mfuyj0dp"), 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("code, emp, amount", e.get("textField_mfuyj0dp"), emp, s.get("numberField_m9j7tdn4_value"));
|
|
|
|
|
+ distributes.add(map);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Map<String, Map<String, Object>>> collect = distributes.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
|
|
+ map -> String.valueOf(map.get("code")),
|
|
|
|
|
+ Collectors.groupingBy(
|
|
|
|
|
+ map -> String.valueOf(map.get("emp")),
|
|
|
|
|
+ Collectors.collectingAndThen(
|
|
|
|
|
+ Collectors.toList(),
|
|
|
|
|
+ list -> {
|
|
|
|
|
+ double amountSum = list.stream()
|
|
|
|
|
+ .mapToDouble(map -> Double.parseDouble(map.get("amount").toString()))
|
|
|
|
|
+ .sum();
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> summary = new HashMap<>();
|
|
|
|
|
+ summary.put("amountSum", amountSum);
|
|
|
|
|
+ return summary;
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ ));
|
|
|
|
|
+ // 2. 核心代码:双层分组汇总
|
|
|
|
|
+ // 第一级按 "项目点编号" 分组
|
|
|
|
|
+ // 第二级按 "开票周期文本" 分组,并对 "含税小计" 求和
|
|
|
|
|
+ Map<String, List<Map>> groupByIds = dataList.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(map -> (String) map.get("textField_luqsbqsn")));
|
|
|
|
|
+ groupByIds.forEach((k,v)->{
|
|
|
|
|
+ //第一步,求和所有相同工程订单的工时合计
|
|
|
|
|
+ Double sum = 0.0;
|
|
|
|
|
+ for (int i = 0; i < groupByIds.get(k).size(); i++) {
|
|
|
|
|
+ //直属队工时合计
|
|
|
|
|
+ double zsdWorkHours = Double.parseDouble(ObjectUtil.isNotNull(groupByIds.get(k).get(i).get("numberField_lrn7frhu_value")) &&
|
|
|
|
|
+ !groupByIds.get(k).get(i).get("numberField_lrn7frhu_value").toString().isEmpty() ? groupByIds.get(k).get(i).get("numberField_lrn7frhu_value").toString() : "0.0");
|
|
|
|
|
+ //外协工时合计
|
|
|
|
|
+ double outWorkHours = Double.parseDouble(ObjectUtil.isNotNull(groupByIds.get(k).get(i).get("numberField_lrn7fri0_value")) &&
|
|
|
|
|
+ !groupByIds.get(k).get(i).get("numberField_lrn7fri0_value").toString().isEmpty() ? groupByIds.get(k).get(i).get("numberField_lrn7fri0_value").toString() : "0.0");
|
|
|
|
|
+ //内协工时合计
|
|
|
|
|
+ double inWorkHours = Double.parseDouble(ObjectUtil.isNotNull(groupByIds.get(k).get(i).get("numberField_lrn7frig_value")) &&
|
|
|
|
|
+ !groupByIds.get(k).get(i).get("numberField_lrn7frig_value").toString().isEmpty() ? groupByIds.get(k).get(i).get("numberField_lrn7frig_value").toString() : "0.0");
|
|
|
|
|
+ sum = sum + zsdWorkHours + outWorkHours + inWorkHours;
|
|
|
|
|
+ }
|
|
|
|
|
+ //第二步,获取工程订单合同总金额,已在报工单中——numberField_luz7kj3p
|
|
|
|
|
+ //第三步,遍历三个人员子表分别统计
|
|
|
|
|
+
|
|
|
|
|
+ List<Map<String,Object>> dataForm = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ Double finalSum = sum;
|
|
|
|
|
+ groupByIds.get(k).forEach(g->{
|
|
|
|
|
+ //合同总金额
|
|
|
|
|
+ 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");
|
|
|
|
|
+ //负责人
|
|
|
|
|
+ Object fzr = g.get("employeeField_lrn7frgx");
|
|
|
|
|
+ //施工日期
|
|
|
|
|
+ String workDate = g.get("dateField_lrn734i2").toString();
|
|
|
|
|
+ //施工内容
|
|
|
|
|
+ String workContent = g.get("textField_lrn7frh6").toString();
|
|
|
|
|
+ //施工地点
|
|
|
|
|
+ String workFrom = g.get("textField_lrn734ie").toString();
|
|
|
|
|
+ //备注
|
|
|
|
|
+ String bz = g.get("textField_lrn7frhb").toString();
|
|
|
|
|
+ //直属队人员名单
|
|
|
|
|
+ List<Map> zsdList = ydService.queryDetails(_initLYParam()
|
|
|
|
|
+ .formInstanceId(g.get("formInstanceId").toString())
|
|
|
|
|
+ .formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
|
|
|
|
|
+ .tableFieldId("tableField_lrn734ib")
|
|
|
|
|
+ .build());
|
|
|
|
|
+ if (ObjectUtil.isNotNull(zsdList) && zsdList.size()>0){
|
|
|
|
|
+ zsdList.forEach(e->{
|
|
|
|
|
+ //人员
|
|
|
|
|
+ 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 = 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);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ //外协人员名单
|
|
|
|
|
+ List<Map> outList = ydService.queryDetails(_initLYParam()
|
|
|
|
|
+ .formInstanceId(g.get("formInstanceId").toString())
|
|
|
|
|
+ .formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
|
|
|
|
|
+ .tableFieldId("tableField_lrn7frhz")
|
|
|
|
|
+ .build());
|
|
|
|
|
+ if (ObjectUtil.isNotNull(outList) && outList.size()>0){
|
|
|
|
|
+ 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 = 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);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ //内协人员名单
|
|
|
|
|
+ List<Map> inList = ydService.queryDetails(_initLYParam()
|
|
|
|
|
+ .formInstanceId(g.get("formInstanceId").toString())
|
|
|
|
|
+ .formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
|
|
|
|
|
+ .tableFieldId("tableField_lrn7frif")
|
|
|
|
|
+ .build());
|
|
|
|
|
+ if (ObjectUtil.isNotNull(inList) && inList.size()>0){
|
|
|
|
|
+ inList.forEach(e->{
|
|
|
|
|
+ //人员
|
|
|
|
|
+ String emp = e.get("employeeField_lrs3k7zz").toString();
|
|
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(emp);
|
|
|
|
|
+ //工时
|
|
|
|
|
+ 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 = 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, jsonArray.get(0), "", fzr, finalSum, workHours, 0.0, "", avg, amount, bz, "内协",type, k);
|
|
|
|
|
+ dataForm.add(map);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ dataForm.forEach(e->{
|
|
|
|
|
+ collect.forEach((k0,v0)->{
|
|
|
|
|
+ if (k0.equals(e.get("code"))){
|
|
|
|
|
+ collect.get(k0).forEach((k1,v1)->{
|
|
|
|
|
+ if (k1.equals(e.get("textField_mfmbs72k"))){
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .appType("APP_FKRD7416H19LDAIN348Y")
|
|
|
|
|
+ .systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
|
|
|
+ .formUuid("FORM-A3E6A06628024EC183BDF295C9BDD42BNZ5Y")
|
|
|
|
|
+ .formDataJson(JSON.toJSONString(e))
|
|
|
|
|
+ .useLatestVersion(true)
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void getMonthWorkSummary() {
|
|
|
|
|
+ Date beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
|
|
|
+ Date endOfMonth = DateUtil.endOfMonth(DateUtil.lastMonth());
|
|
|
|
|
+ String[] dateList = new String[2];
|
|
|
|
|
+ dateList[0] = String.valueOf(beginOfMonth.getTime());
|
|
|
|
|
+ dateList[1] = String.valueOf(endOfMonth.getTime());
|
|
|
|
|
+ //获取当月所有报工单
|
|
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
|
|
|
|
|
+ .appType("APP_FKRD7416H19LDAIN348Y")
|
|
|
|
|
+ .systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
|
|
|
+ .formUuid("FORM-A3E6A06628024EC183BDF295C9BDD42BNZ5Y")
|
|
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_mfmbs72j", (Object) dateList)))
|
|
|
|
|
+ .build());
|
|
|
|
|
+ // 按 "姓名" 分组,汇总工时、人均产值、出勤天数
|
|
|
|
|
+ Map<String, Map<String, Object>> groupByIds = dataList.stream()
|
|
|
|
|
+ .collect(
|
|
|
|
|
+ Collectors.groupingBy(
|
|
|
|
|
+ map -> (String) map.get("textField_mfmbs72k"),
|
|
|
|
|
+ Collectors.collectingAndThen(
|
|
|
|
|
+ Collectors.toList(),
|
|
|
|
|
+ list -> {
|
|
|
|
|
+ double workHours = list.stream()
|
|
|
|
|
+ .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_mfmbs72u_value").toString().isEmpty()?map.get("numberField_mfmbs72u_value").toString():"0.0")).doubleValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ int totalSummary = list.stream()
|
|
|
|
|
+ .mapToInt(map -> ((Number) Double.parseDouble(!map.get("numberField_mfmbs72y_value").toString().isEmpty()?map.get("numberField_mfmbs72y_value").toString():"0.0")).intValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ return new HashMap<String, Object>() {{
|
|
|
|
|
+ put("workHours",(double) workHours);
|
|
|
|
|
+ put("totalSummary", (double) totalSummary);
|
|
|
|
|
+ put("recordCount", list.size());
|
|
|
|
|
+ }};
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ );
|
|
|
|
|
+ // 按 "姓名" 分组,汇总工时、人均产值、出勤天数
|
|
|
|
|
+ Map<String, Map<String, Map<String, Object>>> groupByType = dataList.stream()
|
|
|
|
|
+ .collect(
|
|
|
|
|
+ Collectors.groupingBy(
|
|
|
|
|
+ map -> (String) map.get("textField_mfmbs72k"),
|
|
|
|
|
+ Collectors.groupingBy(
|
|
|
|
|
+ map -> (String) map.get("textField_mfmbs72x"),
|
|
|
|
|
+ Collectors.collectingAndThen(
|
|
|
|
|
+ Collectors.toList(),
|
|
|
|
|
+ list -> {
|
|
|
|
|
+ double workHours = list.stream()
|
|
|
|
|
+ .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_mfmbs72u_value").toString().isEmpty() ? map.get("numberField_mfmbs72u_value").toString() : "0.0")).doubleValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ double totalSummary = list.stream()
|
|
|
|
|
+ .mapToInt(map -> ((Number) Double.parseDouble(!map.get("numberField_mfmbs72y_value").toString().isEmpty() ? map.get("numberField_mfmbs72y_value").toString() : "0.0")).intValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ double totalAmount = list.stream()
|
|
|
|
|
+ .mapToInt(map -> ((Number) Double.parseDouble(!map.get("numberField_mfmbs72v_value").toString().isEmpty() ? map.get("numberField_mfmbs72v_value").toString() : "0.0")).intValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ return new HashMap<String, Object>() {{
|
|
|
|
|
+ put("workHours", workHours);
|
|
|
|
|
+ put("totalSummary", totalSummary);
|
|
|
|
|
+ put("totalAmount", totalAmount);
|
|
|
|
|
+ put("recordCount", list.size());
|
|
|
|
|
+ }};
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ ));
|
|
|
|
|
+ groupByIds.forEach((k0,v0)->{
|
|
|
|
|
+ Map<String, Object> dataMap = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72k, numberField_mfmbs72s, numberField_mfmbs72u, numberField_mfmbs72y",
|
|
|
|
|
+ DateUtil.lastMonth(), k0, v0.get("recordCount"), v0.get("workHours"), v0.get("totalSummary"));
|
|
|
|
|
+ groupByType.forEach((k1,v1)->{
|
|
|
|
|
+ //月份 姓名 出勤天数 工时 应计总产值
|
|
|
|
|
+ if (k0.equals(k1)){
|
|
|
|
|
+ v1.forEach((k2,v2)->{
|
|
|
|
|
+ if ("内包".equals(k2)){
|
|
|
|
|
+ double inWorkHours = Double.parseDouble(v2.get("workHours").toString().isEmpty()?"0.0":v2.get("workHours").toString());
|
|
|
|
|
+ double allWorkHours = Double.parseDouble(v0.get("workHours").toString().isEmpty()?"0.0":v0.get("workHours").toString());
|
|
|
|
|
+ double outWorkHours = allWorkHours - inWorkHours;
|
|
|
|
|
+ //内包工时 非内包工时 内包金额
|
|
|
|
|
+ dataMap.putAll(UtilMap.map("numberField_mfmjcdtu, numberField_mfmjcdtt, numberField_mfmjcdu0",inWorkHours,outWorkHours,v2.get("totalAmount")));
|
|
|
|
|
+ } else if ("非内包".equals(k2)) {
|
|
|
|
|
+ double totalAmount = Double.parseDouble(v2.get("totalAmount").toString().isEmpty()?"0.0":v2.get("totalAmount").toString());
|
|
|
|
|
+ dataMap.put("numberField_mfmbs72v",v2.get("totalSummary"));
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .appType("APP_FKRD7416H19LDAIN348Y")
|
|
|
|
|
+ .systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
|
|
|
+ .formUuid("FORM-72AAAAD2C4A24F729B0D103A4AF3BE59UFOS")
|
|
|
|
|
+ .formDataJson(JSON.toJSONString(dataMap))
|
|
|
|
|
+ .useLatestVersion(true)
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+}
|