|
|
@@ -0,0 +1,438 @@
|
|
|
+package com.malk.kuaikeli.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.malk.kuaikeli.service.KKLService;
|
|
|
+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.utils.UtilMap;
|
|
|
+import com.malk.utils.UtilMc;
|
|
|
+import com.malk.utils.UtilNumber;
|
|
|
+import lombok.SneakyThrows;
|
|
|
+import lombok.Synchronized;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class KKLImplService implements KKLService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private YDService ydService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [动态] 发起单据, 分供应商进行流程推送
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void matchSupplier(Map data) {
|
|
|
+
|
|
|
+ // ppExt: 供应商区分发起: 当前表:供应供子表组件ID,子表内供应商编号,名称,负责人
|
|
|
+ String[] compIds_supplier = String.valueOf(data.get("compId_supplier")).split(", ");
|
|
|
+ String compId_supplier = compIds_supplier[1];
|
|
|
+
|
|
|
+ Map formData = (Map) JSON.parse(String.valueOf(data.get("formData")));
|
|
|
+ List<Map> details = (List<Map>) formData.get(compIds_supplier[0]);
|
|
|
+
|
|
|
+ // 供应商编号, 数据去重: 提取数据区分供应商发起
|
|
|
+ List<Map> suppliers = UtilMc.distinctByKey(details, compId_supplier);
|
|
|
+ for (Map supplier : suppliers) {
|
|
|
+ List<Map> dataList = details.stream().filter(item -> supplier.get(compId_supplier).equals(item.get(compId_supplier))).collect(Collectors.toList());
|
|
|
+ formData.put(compIds_supplier[0], dataList);
|
|
|
+ // ppExt: 参数传递, 目标表组件ID, 对照当前表子表内的子表内供应商编号,名称,负责人已放置主表字段, 此处公共内容提前首条数据进行赋值
|
|
|
+ for (int i = 1; i < compIds_supplier.length; i++) {
|
|
|
+ formData.put(compIds_supplier[i], YDConf.getDataByCompId(dataList.get(0), compIds_supplier[i]));
|
|
|
+ }
|
|
|
+ data.put("formData", JSON.toJSONString(formData));
|
|
|
+ ydService.copyFormData(data); // 发起流程
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private YDClient ydClient;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 菜单计划, 编辑校验
|
|
|
+ * -
|
|
|
+ * 前端提交动作: 校验是否审批通过, 是否当日之前计划, 是否当日且在16点及以后时间, 均不允许提交
|
|
|
+ * 后端校验返回、加任何产品都要走审批,减少20%以内直接过,每一个原材料
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean validateApprove(Map data) {
|
|
|
+
|
|
|
+ boolean approve = false;
|
|
|
+ List<Map> dataList = UtilMap.getList(data, "list");
|
|
|
+ for (Map row : dataList) {
|
|
|
+
|
|
|
+ // 匹配切配工作单, 采购
|
|
|
+ List<Map> formList = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-RK966E71T0LDSTW39WFHE9OQ5GU23FKRRDNLL2")
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lmsuq8am, textField_lm8zta2z, textField_ln1ez5li", data.get("name"), data.get("area"), row.get("textField_ln1ez5li"))))
|
|
|
+ .build(),
|
|
|
+ YDConf.FORM_QUERY.retrieve_search_form).getData();
|
|
|
+
|
|
|
+ if (formList.size() == 0) {
|
|
|
+ approve = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ Map formData = (Map) formList.get(0).get("formData");
|
|
|
+ float cur = UtilMap.getFloat(row, "numberField_lmym5628");
|
|
|
+ float src = UtilMap.getFloat(formData, "numberField_lnrkgimz");
|
|
|
+ if (cur > src || (src - cur) / src > 0.2f) {
|
|
|
+ approve = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (approve) {
|
|
|
+ // 发起菜单审批
|
|
|
+ log.info("发起菜单审批");
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-UP96637100HD036TA1M05B74GHLV3DRS54NLLC")
|
|
|
+ .processCode("TPROC--UP96637100HD036TA1M05B74GHLV3ERS54NLLD")
|
|
|
+ .formDataJson(JSON.toJSONString(data.get("form"))) // 前端数据组装
|
|
|
+ .userId(data.get("user").toString())
|
|
|
+ .build(), YDConf.FORM_OPERATION.start);
|
|
|
+ }
|
|
|
+ // 执行业务逻辑-编辑前后更新计划采购单
|
|
|
+ log.info("执行业务逻辑-编辑前后更新计划采购单");
|
|
|
+ planUpdate(UtilMap.getString(data,"poid"),dataList,data.get("user").toString());
|
|
|
+ return approve;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateState(String id) {
|
|
|
+ try {
|
|
|
+ log.info("异步修改状态,休眠3s");
|
|
|
+ Thread.sleep(3000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ // 更新计划状态
|
|
|
+ ydService.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(id)
|
|
|
+ .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_lm8znr9n", "执行中")))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void planUpdate(String poid,List<Map> dataList,String userId){
|
|
|
+ String formUuid="FORM-XHA66881J8KDA6V3FM6LZBUP9PDE37VESDNLL6";
|
|
|
+ Map formData=(Map) ydClient.queryData(YDParam.builder().formInstId(poid).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+ List<Map> list=UtilMap.getList(formData,"tableField_lln477nw");
|
|
|
+ saveData(list,formData,formUuid,false,userId);// -
|
|
|
+ saveData(dataList,formData,formUuid,true,userId);// +
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveData(List<Map> list,Map formData,String formUuid,boolean isAdd,String userId){
|
|
|
+ for(Map map:list){
|
|
|
+ Map queryMap=new HashMap();
|
|
|
+ queryMap.put("dateField_llndtdwl", Arrays.asList(map.get("dateField_ln1ez5lg"),map.get("dateField_ln1ez5lg")));// 日期
|
|
|
+ queryMap.put("textField_llq9x6ov",formData.get("textField_lln477nh"));// 项目编号
|
|
|
+ queryMap.put("textField_lmk97m1v",map.get("textField_lmk97m1v"));// 原材料编号
|
|
|
+ Map upMap=new HashMap();
|
|
|
+ upMap.put("numberField_llojyfy3",map.get("numberField_lmsvfftq"));// 成本单价
|
|
|
+ upMap.put("numberField_llojyfy4",map.get("numberField_lmsvfftr"));// 服务费率
|
|
|
+ upMap.put("dateField_llndtdwl",map.get("dateField_ln1ez5lg"));// 计划日期
|
|
|
+ upMap.put("textField_llndm599",map.get("textField_llndm599"));// 原材料名称
|
|
|
+ upMap.put("textField_lluj4hu1",map.get("textField_lln3lmn2"));// 单位
|
|
|
+ upMap.put("textField_llq9x6ov",formData.get("textField_lln477nh"));// 项目编号
|
|
|
+ upMap.put("textField_lm5z7kvo",map.get("textField_ln1ez5li"));// 计划日期(文本)
|
|
|
+ upMap.put("textField_lm5z4ioi",formData.get("textField_lmsvfftp"));// 项目名称
|
|
|
+ upMap.put("textField_lmk97m1v",map.get("textField_lmk97m1v"));// 原材料编号
|
|
|
+ upMap.put("selectField_lmqclyx9",map.get("selectField_lmqclyx9"));// 第一分类
|
|
|
+ upMap.put("numberField_lmqclyxa",map.get("numberField_lmqclyxa"));// 供货价
|
|
|
+ upMap.put("textField_lnsmha2j",map.get("textField_lnwxz9ji"));// 品牌
|
|
|
+ upMap.put("textField_lpjet322",formData.get("textField_lpjet322"));// 档口名称
|
|
|
+ upMap.put("textField_lpjet321",formData.get("textField_lpjet321"));// 档口编号
|
|
|
+ upMap.put("textField_loe04txb",map.get("textField_lptgvips"));// 采购单位
|
|
|
+ List<Map> list2=(List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid).searchFieldJson(JSONObject.toJSONString(queryMap)).build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+ if(list2==null||list2.size()<1){
|
|
|
+ if(!isAdd){
|
|
|
+ log.info("未找到对应的计划采购单,退出");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ upMap.put("numberField_lln477o2", map.get("numberField_lmym5628"));// 初始采购数量(kg)
|
|
|
+ upMap.put("numberField_lm9008fq", map.get("numberField_lmym5628"));// 实际采购数量(kg)
|
|
|
+ upMap.put("numberField_lns0dkzv", map.get("numberField_lns0dkzv"));// 投料数量(kg)
|
|
|
+ upMap.put("numberField_loe04txa", map.get("numberField_lomyf89l"));// 采购量
|
|
|
+ ydClient.operateData(YDParam.builder().formUuid(formUuid).formDataJson(JSONObject.toJSONString(upMap)).userId(userId).build(), YDConf.FORM_OPERATION.create);
|
|
|
+ }else{
|
|
|
+ Map oldMap=UtilMap.getMap(list2.get(0),"formData");
|
|
|
+ if(isAdd){
|
|
|
+ upMap.put("numberField_lln477o2", NumberUtil.add(UtilMap.getString(oldMap,"numberField_lln477o2"),UtilMap.getString(map,"numberField_lmym5628")));// 初始采购数量(kg)
|
|
|
+ upMap.put("numberField_lm9008fq", NumberUtil.add(UtilMap.getString(oldMap,("numberField_lm9008fq")),UtilMap.getString(map,("numberField_lmym5628"))));// 实际采购数量(kg)
|
|
|
+ upMap.put("numberField_lns0dkzv", NumberUtil.add(UtilMap.getString(oldMap,("numberField_lns0dkzv")),UtilMap.getString(map,("numberField_lns0dkzv"))));// 投料数量
|
|
|
+ upMap.put("numberField_loe04txa",NumberUtil.add(UtilMap.getString(oldMap,"numberField_loe04txa"),UtilMap.getString(map,"numberField_lomyf89l")));// 采购量
|
|
|
+ }else {
|
|
|
+ upMap.put("numberField_lln477o2", NumberUtil.sub(UtilMap.getString(oldMap, "numberField_lln477o2"), UtilMap.getString(map, "numberField_lmym5628")));// 初始采购数量(kg)
|
|
|
+ upMap.put("numberField_lm9008fq", NumberUtil.sub(UtilMap.getString(oldMap, ("numberField_lm9008fq")), UtilMap.getString(map, ("numberField_lmym5628"))));// 实际采购数量(kg)
|
|
|
+ upMap.put("numberField_lns0dkzv", NumberUtil.sub(UtilMap.getString(oldMap, ("numberField_lns0dkzv")), UtilMap.getString(map, ("numberField_lns0dkzv"))));// 投料数量
|
|
|
+ upMap.put("numberField_loe04txa",NumberUtil.sub(UtilMap.getString(oldMap,"numberField_loe04txa"),UtilMap.getString(map,"numberField_lomyf89l")));// 采购量
|
|
|
+ }
|
|
|
+ ydClient.operateData(YDParam.builder().formInstanceId(UtilMap.getString(list2.get(0),"formInstanceId")).updateFormDataJson(JSONObject.toJSONString(upMap)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ if(isAdd){
|
|
|
+ // 保存切配工作单
|
|
|
+ String formUuid2="FORM-RK966E71T0LDSTW39WFHE9OQ5GU23FKRRDNLL2";
|
|
|
+ Map qMap=new HashMap();
|
|
|
+ qMap.put("textField_lmsuq8am",formData.get("textField_lln477nh"));// 项目编号
|
|
|
+ qMap.put("dateField_llndtdwl",Arrays.asList(map.get("dateField_ln1ez5lg"),map.get("dateField_ln1ez5lg")));// 日期
|
|
|
+ qMap.put("textField_lm8zta2z",formData.get("selectField_llm1i9yl"));// 餐次
|
|
|
+ qMap.put("selectField_lln3lmn5",map.get("textField_lm4m83rv"));// 切配类型
|
|
|
+ qMap.put("textField_llndm599",map.get("textField_llndm599"));// 原材料名称
|
|
|
+ Map addMap=new HashMap();
|
|
|
+ addMap.putAll(qMap);
|
|
|
+ String data=String.valueOf(formData.get("associationFormField_lln477nb_id"));
|
|
|
+ addMap.put("associationFormField_llndtdwg",JSONObject.parseArray(data.substring(1,data.length()-1).replaceAll("\\\\","")));// 项目点
|
|
|
+ addMap.put("numberField_lln477o2",map.get("numberField_lmym5628"));// 数量(kg)
|
|
|
+ addMap.put("numberField_lnrkgimz",map.get("numberField_lomyf89l"));// 初始采购数量
|
|
|
+ addMap.put("textField_ln1ez5li",map.get("textField_ln1ez5li"));// 计划日期(文本)
|
|
|
+ addMap.put("dateField_llndtdwl",map.get("dateField_ln1ez5lg"));// 日期
|
|
|
+ List<Map> list3=(List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid2).searchFieldJson(JSONObject.toJSONString(qMap)).build(),
|
|
|
+ YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+ if(list3==null||list3.size()<1){
|
|
|
+ ydClient.operateData(YDParam.builder().formUuid(formUuid2)
|
|
|
+ .formDataJson(JSONObject.toJSONString(addMap))
|
|
|
+ .userId(userId)
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
+ }else{
|
|
|
+ ydClient.operateData(YDParam.builder().formInstanceId(UtilMap.getString(list3.get(0),"formInstanceId"))
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(addMap))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 定价单: 项目点 & 供应商大类, 数据匹配
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ @Synchronized
|
|
|
+ public void serviceRate(Map data) {
|
|
|
+
|
|
|
+ // todo2: 宜搭更新,校验的超时等待在3s, 因此方法修改为异步. 容错定时任务?匹配不一致数据
|
|
|
+ String supperCode = String.valueOf(data.get("code"));
|
|
|
+ List<String> types = (List<String>) JSON.parse(String.valueOf(data.get("type")));
|
|
|
+ List<String> rates = (List<String>) JSON.parse(String.valueOf(data.get("rate")));
|
|
|
+ List<String> rates2 = (List<String>) JSON.parse(String.valueOf(data.get("rate2")));
|
|
|
+ List<String> status = (List<String>) JSON.parse(String.valueOf(data.get("status")));
|
|
|
+
|
|
|
+ for (int i = 0; i < types.size(); i++) {
|
|
|
+
|
|
|
+ List<Map> materials = supperMaterials(supperCode, types.get(i));
|
|
|
+ List<Map> records = projectMaterials(supperCode, types.get(i));
|
|
|
+ log.info("定价单同步, {}, {}", materials.size(), records.size());
|
|
|
+ for (Map material : materials) {
|
|
|
+
|
|
|
+ // 数据处理: 服务费率与供货价, 项目信息
|
|
|
+ double rate = Double.valueOf(rates.get(i));
|
|
|
+ double rate2 = Double.valueOf(rates2.get(i));
|
|
|
+ material.putAll(UtilMap.map("numberField_llkb7kcy, numberField_lpalgz04, textField_lm4lxur8", rate, rate2, status.get(i)));
|
|
|
+ double price1 = UtilNumber.formatPrecisionValue(UtilMap.getDouble(material, "numberField_llkknd6g") * (rate + 100) / 100f);
|
|
|
+ double price2 = UtilNumber.formatPrecisionValue(UtilMap.getDouble(material, "numberField_lpalgz05") * (100 + rate2) / 100f);
|
|
|
+ material.putAll(UtilMap.map("numberField_llkknd6h, numberField_lpalgz0a", price1, price2));
|
|
|
+ material.putAll(UtilMap.map("textField_llm1vtjm, textField_loy1ep8r", data.get("proCode"), data.get("proName")));
|
|
|
+
|
|
|
+ YDParam ydParam = YDParam.builder()
|
|
|
+ .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
|
|
|
+ .formDataJson(JSON.toJSONString(material))
|
|
|
+ .build();
|
|
|
+ YDConf.FORM_OPERATION operation = YDConf.FORM_OPERATION.create;
|
|
|
+ // ppExt: 提交校验逻辑, 匹配定价单数若存在则匹配服务费率, 不一致执行更新
|
|
|
+ if (records.size() > 0) {
|
|
|
+ Optional optional = records.stream().filter(item -> item.get("textField_llkb7kd2").equals(material.get("textField_llkb7kd2"))).findAny();
|
|
|
+ if (optional.isPresent()) {
|
|
|
+ ydParam.setUpdateFormDataJson(JSON.toJSONString(material));
|
|
|
+ ydParam.setFormInstanceId(String.valueOf(((Map) optional.get()).get("formInstanceId")));
|
|
|
+ operation = YDConf.FORM_OPERATION.update;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ydClient.operateData(ydParam, operation);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /// 原材料: 供应商第一分类下物料
|
|
|
+ List<Map> supperMaterials(String code, String type) {
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbyj1, selectField_llkk6cms", code, type)))
|
|
|
+ .build());
|
|
|
+ log.info("supperMaterials, {}", dataList.size());
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 定价单: 供应商第一分类下物料
|
|
|
+ List<Map> projectMaterials(String code, String type) {
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbyj1, selectField_llkk6cms", code, type)))
|
|
|
+ .build());
|
|
|
+ log.info("projectMaterials, {}", dataList.size());
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 物料档案: 价格调整
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void adjustCost(Map data) {
|
|
|
+
|
|
|
+ double cost1 = UtilMap.getDouble(data, "costPrice");
|
|
|
+ double cost2 = UtilMap.getDouble(data, "nextCostPrice");
|
|
|
+ String cost3 = UtilMap.getString(data,"timeLimit");
|
|
|
+
|
|
|
+ //todo2: 服务执行, 周日凌晨更新价格前, 是否重新匹配数据?
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("itemNumber"))))
|
|
|
+ .build());
|
|
|
+ log.info("adjustCost, {}", dataList.size());
|
|
|
+
|
|
|
+ for (Map record : dataList) {
|
|
|
+// if (cost1 == UtilMap.getDouble(record, "numberField_llkknd6g") && cost2 == UtilMap.getDouble(record, "numberField_lpalgz05")) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+ double rate = UtilMap.getDouble(record, "numberField_llkb7kcy");
|
|
|
+ double rate2 = UtilMap.getDouble(record, "numberField_lpalgz04");
|
|
|
+ double price1 = UtilNumber.formatPrecisionValue(cost1 * (rate + 100) / 100f);
|
|
|
+ double price2 = UtilNumber.formatPrecisionValue(cost2 * (100 + rate2) / 100f);
|
|
|
+
|
|
|
+ Map update = UtilMap.map("numberField_llkknd6h, numberField_lpalgz0a", price1, price2);
|
|
|
+ update.putAll(UtilMap.map("numberField_llkknd6g, numberField_lpalgz05, dateField_lm4lxur7", cost1, cost2, cost3 ));
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(String.valueOf(record.get("formInstanceId")))
|
|
|
+ .updateFormDataJson(JSON.toJSONString(update))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 供应商原材料档案: 新增匹配
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void additionMaterial(Map data) {
|
|
|
+
|
|
|
+ // 通过供应商编号 查询项目
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-W2A66Z91B4KDWDIAA7SI1BRBRTKM3XL87BKLL0")
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbai8", data.get("gysNumber"))))
|
|
|
+ .build());
|
|
|
+ dataList.forEach(dataItem -> {
|
|
|
+ List<Map> mapList = (List<Map>) dataItem.get("tableField_llq74mwk");
|
|
|
+ // 这里对比第二分类 selectField_llq74mwl ==> selectField_lv3v3911
|
|
|
+ List<Map> maps = mapList.stream().filter(items -> items.get("selectField_lv3v3911").equals(data.get("firstName"))).collect(Collectors.toList());
|
|
|
+ if(maps.size()>0){
|
|
|
+
|
|
|
+ List<Map> goodList = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("goodNumber"))))
|
|
|
+ .build());
|
|
|
+ Map goodMap = goodList.get(0);
|
|
|
+
|
|
|
+ Map hashMap = new HashMap();
|
|
|
+ hashMap.put("textField_llzzbyj1",data.get("gysNumber")); //供应商编号
|
|
|
+ hashMap.put("textField_lmsli3bq",dataItem.get("textField_lmsli3bq")); //供应商名称
|
|
|
+ hashMap.put("textField_llm1vtjm",dataItem.get("textField_lllovku7")); //项目编号
|
|
|
+ hashMap.put("textField_loy1ep8r",dataItem.get("textField_loy1ep8r"));//项目名称
|
|
|
+ hashMap.put("textField_llkb7kd2",data.get("goodNumber")); //物品编号
|
|
|
+ hashMap.put("textField_llkb7kd1",goodMap.get("textField_llkb7kd1")); //物品名称
|
|
|
+
|
|
|
+ hashMap.put("textField_llkb7kd3",goodMap.get("textField_llkb7kd3")); //单位
|
|
|
+ hashMap.put("textField_llkb7kd4",goodMap.get("textField_llkb7kd4")); //规格
|
|
|
+ hashMap.put("selectField_llkb7kd5",data.get("firstName")); //第一分类
|
|
|
+ hashMap.put("selectField_llkk6cms",goodMap.get("selectField_llkk6cms")); //第二分类
|
|
|
+
|
|
|
+
|
|
|
+ double rate = UtilMap.getDouble(maps.get(0), "numberField_llq74mwm"); //本周费率
|
|
|
+ double rate2 = UtilMap.getDouble(maps.get(0), "numberField_lpplr3im"); //下周费率
|
|
|
+
|
|
|
+ double pce1 = UtilMap.getDouble(goodMap, "numberField_llkknd6g"); //成本单价
|
|
|
+ double pce2 = UtilMap.getDouble(goodMap, "numberField_lpalgz05"); //下周成本单价
|
|
|
+
|
|
|
+ double price1 = UtilNumber.formatPrecisionValue(pce1 * (rate + 100) / 100f); //下周成本价
|
|
|
+ double price2 = UtilNumber.formatPrecisionValue(pce2 * (rate2 + 100 ) / 100f); //下周供货价
|
|
|
+
|
|
|
+ hashMap.put("numberField_llkb7kcy",rate); //服务费率
|
|
|
+ hashMap.put("numberField_lpalgz04",rate2); //下周服务费率
|
|
|
+
|
|
|
+ hashMap.put("numberField_llkknd6g",pce1); //成本单价
|
|
|
+ hashMap.put("numberField_lpalgz05",pce2); //下周成本单价
|
|
|
+
|
|
|
+ hashMap.put("numberField_llkknd6h",price1); //供货价
|
|
|
+ hashMap.put("numberField_lpalgz0a",price2); //下周供货价
|
|
|
+
|
|
|
+ hashMap.put("dateField_lm4lxur7",goodMap.get("dateField_lm4lxur7")); //期限
|
|
|
+ hashMap.put("textField_lm4lxur8","已启用"); //状态
|
|
|
+ hashMap.put("numberField_lnrzzg03",goodMap.get("numberField_lnrzzg03")); //包装数量
|
|
|
+ hashMap.put("textField_lnrzzg04",goodMap.get("textField_lnrzzg04")); //包装单位
|
|
|
+
|
|
|
+
|
|
|
+ log.info("hashMap,{}", JSON.toJSONString(hashMap));
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
|
|
|
+ .formDataJson(JSON.toJSONString(hashMap))
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 周日同步更新价格
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public void syncPrice() {
|
|
|
+
|
|
|
+ // 定价单明细表
|
|
|
+ List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
|
|
|
+ .build());
|
|
|
+ for (Map record : dataList) {
|
|
|
+
|
|
|
+ double price1 = UtilMap.getDouble(record, "numberField_llkknd6h");
|
|
|
+ double price2 = UtilMap.getDouble(record, "numberField_lpalgz0a");
|
|
|
+ if (price1 == price2) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 本质上是对比供货价差异, 下周全覆盖
|
|
|
+ Map update = UtilMap.map("numberField_llkknd6h, numberField_llkb7kcy, numberField_llkknd6g", price2, record.get("numberField_lpalgz04"), record.get("numberField_lpalgz05"));
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(String.valueOf(record.get("formInstanceId")))
|
|
|
+ .updateFormDataJson(JSON.toJSONString(update))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ // 供应商原材料表
|
|
|
+ List<Map> dataList2 = ydService.queryFormData_all(YDParam.builder()
|
|
|
+ .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
|
|
|
+ .build());
|
|
|
+ for (Map record : dataList2) {
|
|
|
+
|
|
|
+ double cost1 = UtilMap.getDouble(record, "numberField_llkknd6g");
|
|
|
+ double cost2 = UtilMap.getDouble(record, "numberField_lpalgz05");
|
|
|
+ if (cost1 == cost2) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Map update = UtilMap.map("numberField_llkknd6g", cost2);
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(String.valueOf(record.get("formInstanceId")))
|
|
|
+ .updateFormDataJson(JSON.toJSONString(update))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|