|
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.malk.lanyun.service.WorkService;
|
|
import com.malk.lanyun.service.WorkService;
|
|
|
import com.malk.server.aliwork.YDConf;
|
|
import com.malk.server.aliwork.YDConf;
|
|
|
import com.malk.server.aliwork.YDParam;
|
|
import com.malk.server.aliwork.YDParam;
|
|
@@ -50,14 +51,17 @@ public class WorkServiceImpl implements WorkService {
|
|
|
Date beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
Date beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
|
Date endOfMonth = DateUtil.endOfMonth(DateUtil.lastMonth());
|
|
Date endOfMonth = DateUtil.endOfMonth(DateUtil.lastMonth());
|
|
|
String[] dateList = new String[2];
|
|
String[] dateList = new String[2];
|
|
|
- dateList[0] = String.valueOf(beginOfMonth.getTime());
|
|
|
|
|
- dateList[1] = String.valueOf(endOfMonth.getTime());
|
|
|
|
|
|
|
+// dateList[0] = String.valueOf(beginOfMonth.getTime());
|
|
|
|
|
+ dateList[0] = String.valueOf(1755705600000L);
|
|
|
|
|
+// dateList[1] = String.valueOf(endOfMonth.getTime());
|
|
|
|
|
+ dateList[1] = String.valueOf(1755791999000L);
|
|
|
//获取当月所有报工单
|
|
//获取当月所有报工单
|
|
|
List<Map> dataList = ydService.queryFormData_all(_initLYParam()
|
|
List<Map> dataList = ydService.queryFormData_all(_initLYParam()
|
|
|
.formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
|
|
.formUuid("FORM-C9543719A88F4D99A8E197FD6F9DE182ZOW9")
|
|
|
.searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lrn734i2", (Object) dateList)))
|
|
.searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lrn734i2", (Object) dateList)))
|
|
|
.build());
|
|
.build());
|
|
|
|
|
|
|
|
|
|
+ //分包派发
|
|
|
List<Map> distributeList = ydService.queryFormData_all(_initLYParam()
|
|
List<Map> distributeList = ydService.queryFormData_all(_initLYParam()
|
|
|
.formUuid("FORM-886B38D31DA144C2B384BD23C3D13126QSK3")
|
|
.formUuid("FORM-886B38D31DA144C2B384BD23C3D13126QSK3")
|
|
|
.build());
|
|
.build());
|
|
@@ -71,7 +75,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
distributeSonList.forEach(s->{
|
|
distributeSonList.forEach(s->{
|
|
|
String emp = s.get("employeeField_lrs3k7zx").toString();
|
|
String emp = s.get("employeeField_lrs3k7zx").toString();
|
|
|
JSONArray jsonArray = JSONArray.parseArray(emp);
|
|
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"));
|
|
|
|
|
|
|
+ Map<String, Object> map = UtilMap.map("emp, amount", jsonArray.get(0), s.get("numberField_lvkm787c_value"));
|
|
|
distributes.add(map);
|
|
distributes.add(map);
|
|
|
});
|
|
});
|
|
|
distributeSonList = ydService.queryDetails(_initLYParam()
|
|
distributeSonList = ydService.queryDetails(_initLYParam()
|
|
@@ -81,15 +85,13 @@ public class WorkServiceImpl implements WorkService {
|
|
|
.build());
|
|
.build());
|
|
|
distributeSonList.forEach(s->{
|
|
distributeSonList.forEach(s->{
|
|
|
String emp = s.get("textField_mad9s638").toString();
|
|
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"));
|
|
|
|
|
|
|
+ Map<String, Object> map = UtilMap.map("emp, amount",emp, s.get("numberField_m9j7tdn4_value"));
|
|
|
distributes.add(map);
|
|
distributes.add(map);
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- Map<String, Map<String, Map<String, Object>>> collect = distributes.stream()
|
|
|
|
|
|
|
+ Map<String, Map<String, Object>> collect = distributes.stream()
|
|
|
.collect(Collectors.groupingBy(
|
|
.collect(Collectors.groupingBy(
|
|
|
- map -> String.valueOf(map.get("code")),
|
|
|
|
|
- Collectors.groupingBy(
|
|
|
|
|
map -> String.valueOf(map.get("emp")),
|
|
map -> String.valueOf(map.get("emp")),
|
|
|
Collectors.collectingAndThen(
|
|
Collectors.collectingAndThen(
|
|
|
Collectors.toList(),
|
|
Collectors.toList(),
|
|
@@ -104,7 +106,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
|
- ));
|
|
|
|
|
|
|
+ );
|
|
|
// 2. 核心代码:双层分组汇总
|
|
// 2. 核心代码:双层分组汇总
|
|
|
// 第一级按 "项目点编号" 分组
|
|
// 第一级按 "项目点编号" 分组
|
|
|
// 第二级按 "开票周期文本" 分组,并对 "含税小计" 求和
|
|
// 第二级按 "开票周期文本" 分组,并对 "含税小计" 求和
|
|
@@ -131,7 +133,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
List<Map<String,Object>> dataForm = new ArrayList<>();
|
|
List<Map<String,Object>> dataForm = new ArrayList<>();
|
|
|
|
|
|
|
|
Double finalSum = sum;
|
|
Double finalSum = sum;
|
|
|
- groupByIds.get(k).forEach(g->{
|
|
|
|
|
|
|
+ v.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");
|
|
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");
|
|
|
//负责人
|
|
//负责人
|
|
@@ -160,7 +162,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
//人均产值
|
|
//人均产值
|
|
|
double avg = amount / finalSum * workHours;
|
|
double avg = amount / finalSum * workHours;
|
|
|
//内包/非内包
|
|
//内包/非内包
|
|
|
- String type = e.get("selectField_mfmkxzbk").toString();
|
|
|
|
|
|
|
+ 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, " +
|
|
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",
|
|
"numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
|
|
@@ -183,7 +185,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
//人均产值
|
|
//人均产值
|
|
|
double avg = amount / finalSum * workHours;
|
|
double avg = amount / finalSum * workHours;
|
|
|
//内包/非内包
|
|
//内包/非内包
|
|
|
- String type = e.get("selectField_mfmkxzbm").toString();
|
|
|
|
|
|
|
+ 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, " +
|
|
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",
|
|
"numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
|
|
@@ -207,7 +209,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
//人均产值
|
|
//人均产值
|
|
|
double avg = amount / finalSum * workHours;
|
|
double avg = amount / finalSum * workHours;
|
|
|
//内包/非内包
|
|
//内包/非内包
|
|
|
- String type = e.get("selectField_mfmkxzbo").toString();
|
|
|
|
|
|
|
+ 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, " +
|
|
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",
|
|
"numberField_mfmbs72u, numberField_mfmbs72v, textField_mfmbs72x, numberField_mfmbs72y, numberField_mfmbs72z, textField_mfmbs731, textField_mfmj5lmy, textField_mfmbs72x, code",
|
|
@@ -217,27 +219,72 @@ public class WorkServiceImpl implements WorkService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
dataForm.forEach(e->{
|
|
dataForm.forEach(e->{
|
|
|
|
|
+ System.out.println(e);
|
|
|
collect.forEach((k0,v0)->{
|
|
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);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ if (e.get("textField_mfmbs72k").toString().contains(k0)){
|
|
|
|
|
+ if ("内包".equals(e.get("textField_mfmbs72x"))){
|
|
|
|
|
+ e.put("numberField_mfmbs72v",v0.get("amountSum"));
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
});
|
|
});
|
|
|
|
|
+ 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"))))
|
|
|
|
|
+ .formDataJson(JSON.toJSONString(e))
|
|
|
|
|
+ .useLatestVersion(true)
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void getMonthOutSummary() {
|
|
|
|
|
+ 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());
|
|
|
|
|
+ dataList.forEach(d->{
|
|
|
|
|
+ //直属队工时合计
|
|
|
|
|
+ double zsdWorkHours = Double.parseDouble(ObjectUtil.isNotNull(d.get("numberField_lrn7frhu_value")) &&
|
|
|
|
|
+ !d.get("numberField_lrn7frhu_value").toString().isEmpty() ? d.get("numberField_lrn7frhu_value").toString() : "0.0");
|
|
|
|
|
+ //外协工时合计
|
|
|
|
|
+ double outWorkHours = Double.parseDouble(ObjectUtil.isNotNull(d.get("numberField_lrn7fri0_value")) &&
|
|
|
|
|
+ !d.get("numberField_lrn7fri0_value").toString().isEmpty() ? d.get("numberField_lrn7fri0_value").toString() : "0.0");
|
|
|
|
|
+ //内协工时合计
|
|
|
|
|
+ double inWorkHours = Double.parseDouble(ObjectUtil.isNotNull(d.get("numberField_lrn7frig_value")) &&
|
|
|
|
|
+ !d.get("numberField_lrn7frig_value").toString().isEmpty() ? d.get("numberField_lrn7frig_value").toString() : "0.0");
|
|
|
|
|
+ //合同总额
|
|
|
|
|
+ Double amount = Double.parseDouble(ObjectUtil.isNotNull(d.get("numberField_luz7kj3p_value"))&& !d.get("numberField_luz7kj3p_value").toString().isEmpty()?d.get("numberField_luz7kj3p_value").toString():"0.0");
|
|
|
|
|
+
|
|
|
|
|
+ //日期 早上到达时间 下午结束时间 施工单位 施工内容 联系人 工程负责人 人工数 人均产值 物耗金额 物耗成本比率 施工地址 联系电话
|
|
|
|
|
+ Map<String, Object> dataForm = UtilMap.map("dateField_mfmbs72j, dateField_lrn7frgy, dateField_lrn7frgz, textField_mfmbs72h, textField_mfmbs72i, textField_mfmbs72k, employeeField_mfmbs72q, " +
|
|
|
|
|
+ "numberField_mfmbs72s, numberField_mfmbs72y, numberField_mfmbs72z, numberField_mfz00i97, textField_mfz00i96, textField_mfz00i98", d.get("dateField_lrn734i2"),
|
|
|
|
|
+ d.get("dateField_lrn7frgy"), d.get("dateField_lrn7frgz"), d.get("textField_lrn734ie"), d.get("textField_lrn7frh6"), d.get("textField_lv37crl1"),
|
|
|
|
|
+ d.get("employeeField_lrn7frgx_id"), zsdWorkHours + outWorkHours + inWorkHours, amount / (zsdWorkHours + outWorkHours + inWorkHours), 0.0, 0.0,
|
|
|
|
|
+ d.get("textField_luz6ben7"), d.get("textField_lv37crkw"));
|
|
|
|
|
+
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .appType("APP_FKRD7416H19LDAIN348Y")
|
|
|
|
|
+ .systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
|
|
|
+ .formUuid("FORM-52DCE3E917C3432AA559A146E582EB71NI0B")
|
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("dateField_mfmbs72j, textField_mfmbs72k", dateList, dataForm.get("textField_mfmbs72k"))))
|
|
|
|
|
+ .formDataJson(JSON.toJSONString(dataForm))
|
|
|
|
|
+ .useLatestVersion(true)
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void getMonthWorkSummary() {
|
|
public void getMonthWorkSummary() {
|
|
|
Date beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
Date beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
@@ -275,7 +322,7 @@ public class WorkServiceImpl implements WorkService {
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
|
);
|
|
);
|
|
|
- // 按 "姓名" 分组,汇总工时、人均产值、出勤天数
|
|
|
|
|
|
|
+ // 按 "姓名"、"内包/非内包" 分组,汇总工时、人均产值、出勤天数
|
|
|
Map<String, Map<String, Map<String, Object>>> groupByType = dataList.stream()
|
|
Map<String, Map<String, Map<String, Object>>> groupByType = dataList.stream()
|
|
|
.collect(
|
|
.collect(
|
|
|
Collectors.groupingBy(
|
|
Collectors.groupingBy(
|
|
@@ -298,39 +345,127 @@ public class WorkServiceImpl implements WorkService {
|
|
|
put("workHours", workHours);
|
|
put("workHours", workHours);
|
|
|
put("totalSummary", totalSummary);
|
|
put("totalSummary", totalSummary);
|
|
|
put("totalAmount", totalAmount);
|
|
put("totalAmount", totalAmount);
|
|
|
- put("recordCount", list.size());
|
|
|
|
|
}};
|
|
}};
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
|
));
|
|
));
|
|
|
|
|
+ List<Map> balanceList = ydService.queryFormData_all(YDParam.builder()
|
|
|
|
|
+ .appType("APP_FKRD7416H19LDAIN348Y")
|
|
|
|
|
+ .systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
|
|
|
+ .formUuid("FORM-C76A49442DF84ECCA6C0654623464861ELB2")
|
|
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_mfxkiafr", (Object) dateList)))
|
|
|
|
|
+ .build());
|
|
|
groupByIds.forEach((k0,v0)->{
|
|
groupByIds.forEach((k0,v0)->{
|
|
|
Map<String, Object> dataMap = UtilMap.map("dateField_mfmbs72j, textField_mfmbs72k, numberField_mfmbs72s, numberField_mfmbs72u, numberField_mfmbs72y",
|
|
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"));
|
|
DateUtil.lastMonth(), k0, v0.get("recordCount"), v0.get("workHours"), v0.get("totalSummary"));
|
|
|
groupByType.forEach((k1,v1)->{
|
|
groupByType.forEach((k1,v1)->{
|
|
|
//月份 姓名 出勤天数 工时 应计总产值
|
|
//月份 姓名 出勤天数 工时 应计总产值
|
|
|
if (k0.equals(k1)){
|
|
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"));
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ double allWorkHours = Double.parseDouble(v0.get("workHours").toString().isEmpty()?"0.0":v0.get("workHours").toString());
|
|
|
|
|
+ if (v1.containsKey("内包")){
|
|
|
|
|
+ double inWorkHours = Double.parseDouble(v1.get("内包").get("workHours").toString().isEmpty()?"0.0":v1.get("内包").get("workHours").toString());
|
|
|
|
|
+ double outWorkHours = allWorkHours - inWorkHours;
|
|
|
|
|
+ //内包工时 非内包工时 内包金额
|
|
|
|
|
+ dataMap.putAll(UtilMap.map("numberField_mfmjcdtu, numberField_mfmjcdtt, numberField_mfmjcdu0",inWorkHours,outWorkHours,v1.get("内包").get("totalAmount")));
|
|
|
|
|
+ }else {
|
|
|
|
|
+ dataMap.putAll(UtilMap.map("numberField_mfmjcdtu, numberField_mfmjcdtt, numberField_mfmjcdu0",0.0,allWorkHours,0.0));
|
|
|
|
|
+ }
|
|
|
|
|
+ if (v1.containsKey("非内包")){
|
|
|
|
|
+ double totalSummary = Double.parseDouble(v1.get("非内包").get("totalSummary").toString().isEmpty()?"0.0":v1.get("非内包").get("totalSummary").toString());
|
|
|
|
|
+ dataMap.put("numberField_mfmbs72v",totalSummary);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ dataMap.put("numberField_mfmbs72v",0.0);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ //匹配调差
|
|
|
|
|
+ balanceList.forEach(b->{
|
|
|
|
|
+ if (k0.contains(b.get("textField_mfxkiafs").toString())){
|
|
|
|
|
+ double balance = Double.parseDouble(ObjectUtil.isNotNull(b.get("numberField_mfxkiafq")) && !b.get("numberField_mfxkiafq").toString().isEmpty() ? b.get("numberField_mfxkiafq").toString() : "0.0");
|
|
|
|
|
+ //补差产值
|
|
|
|
|
+ dataMap.put("numberField_mfmbs72z",balance);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+ double totalSummary = Double.parseDouble(ObjectUtil.isNotNull(dataMap.get("numberField_mfmbs72v")) && !dataMap.get("numberField_mfmbs72v").toString().isEmpty() ? dataMap.get("numberField_mfmbs72v").toString() : "0.0");
|
|
|
|
|
+ double outWorkHours = Double.parseDouble(ObjectUtil.isNotNull(dataMap.get("numberField_mfmbs72u")) && !dataMap.get("numberField_mfmbs72u").toString().isEmpty() ? dataMap.get("numberField_mfmbs72u").toString() : "0.0");
|
|
|
|
|
+ double cqts = Double.parseDouble(ObjectUtil.isNotNull(dataMap.get("numberField_mfmbs72s")) && !dataMap.get("numberField_mfmbs72s").toString().isEmpty() ? dataMap.get("numberField_mfmbs72s").toString() : "0.0");
|
|
|
|
|
+ double balance = Double.parseDouble(ObjectUtil.isNotNull(dataMap.get("numberField_mfmbs72z")) && !dataMap.get("numberField_mfmbs72z").toString().isEmpty() ? dataMap.get("numberField_mfmbs72z").toString() : "0.0");
|
|
|
|
|
+ totalSummary = totalSummary + balance;
|
|
|
|
|
+ //个人效率总量(非内包金额)
|
|
|
|
|
+ dataMap.put("numberField_mfmjcdtv",totalSummary);
|
|
|
|
|
+ //效率工作量
|
|
|
|
|
+ dataMap.put("numberField_mfmjcdtw",totalSummary * 0.06);
|
|
|
|
|
+ //队月度人均工作量
|
|
|
|
|
+ dataMap.put("numberField_mfmjcdtx",totalSummary / outWorkHours);
|
|
|
|
|
+ //队月度人均效益工作量(非内包人均)
|
|
|
|
|
+ dataMap.put("numberField_mfmjcdty",totalSummary / outWorkHours * 0.4 / 21.75 * cqts);
|
|
|
ydClient.operateData(YDParam.builder()
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.appType("APP_FKRD7416H19LDAIN348Y")
|
|
.appType("APP_FKRD7416H19LDAIN348Y")
|
|
|
.systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
.systemToken("86D66PA11ITXR3RC60J43DUP75EC2T5T6Z0EMZ91")
|
|
|
.formUuid("FORM-72AAAAD2C4A24F729B0D103A4AF3BE59UFOS")
|
|
.formUuid("FORM-72AAAAD2C4A24F729B0D103A4AF3BE59UFOS")
|
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("dateField_mfmbs72j, textField_mfmbs72k", dateList, k0)))
|
|
|
.formDataJson(JSON.toJSONString(dataMap))
|
|
.formDataJson(JSON.toJSONString(dataMap))
|
|
|
.useLatestVersion(true)
|
|
.useLatestVersion(true)
|
|
|
- .build(), YDConf.FORM_OPERATION.create);
|
|
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void getMonthCheck() {
|
|
|
|
|
+ Date date = DateUtil.date();
|
|
|
|
|
+ Date beginOfMonth = DateUtil.beginOfMonth(date);
|
|
|
|
|
+ Date endOfMonth = DateUtil.endOfMonth(date);
|
|
|
|
|
+ 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-78C6682DCD5C4A549F463CE86133B0C9XTKC")
|
|
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lr521kcc", (Object) dateList)))
|
|
|
|
|
+ .build());
|
|
|
|
|
+ Map<String, HashMap<String, Object>> collect = dataList.stream()
|
|
|
|
|
+ .filter(map -> ObjectUtil.isNotNull(map.get("departmentSelectField_ltgjv0bp")))
|
|
|
|
|
+ .collect(
|
|
|
|
|
+ Collectors.groupingBy(
|
|
|
|
|
+ map -> (String) map.get("departmentSelectField_ltgjv0bp").toString(),
|
|
|
|
|
+ Collectors.collectingAndThen(
|
|
|
|
|
+ Collectors.toList(),
|
|
|
|
|
+ list -> {
|
|
|
|
|
+ double ys = list.stream()
|
|
|
|
|
+ .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_lr521kce_value").toString().isEmpty() ? map.get("numberField_lr521kce_value").toString() : "0.0")).doubleValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ double sx = list.stream()
|
|
|
|
|
+ .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_lr521kcg_value").toString().isEmpty() ? map.get("numberField_lr521kcg_value").toString() : "0.0")).doubleValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ double jr = list.stream()
|
|
|
|
|
+ .mapToDouble(map -> ((Number) Double.parseDouble(!map.get("numberField_lr521kch_value").toString().isEmpty() ? map.get("numberField_lr521kch_value").toString() : "0.0")).doubleValue())
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ return new HashMap<String, Object>() {{
|
|
|
|
|
+ put("numberField_lr521kce", ys);
|
|
|
|
|
+ put("numberField_lr521kcg", sx);
|
|
|
|
|
+ put("numberField_lr521kch", jr);
|
|
|
|
|
+ }};
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ );
|
|
|
|
|
+ System.out.println(collect.size());
|
|
|
|
|
+ //遍历获取项目点名称
|
|
|
|
|
+ collect.forEach((k0,v0)->{
|
|
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(k0);
|
|
|
|
|
+ Map<String, Object> updateMap = UtilMap.map("departmentSelectField_ltgjv0bp, dateField_lr521kcc", k0,beginOfMonth);
|
|
|
|
|
+ jsonArray.forEach(e->{
|
|
|
|
|
+ updateMap.put("textField_mfxoavab",e.toString());
|
|
|
|
|
+ updateMap.putAll(collect.get(k0));
|
|
|
|
|
+ });
|
|
|
|
|
+ System.out.println(updateMap);
|
|
|
|
|
+ ydClient.operateData(_initLYParam()
|
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("dateField_lr521kcc, textField_mfxoavab", dateList, jsonArray.get(0))))
|
|
|
|
|
+ .formUuid("FORM-80FE813A909547139065CFEAA98C26C31HSW")
|
|
|
|
|
+ .formDataJson(JSON.toJSONString(updateMap))
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|