KKLImplService.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. package com.malk.kuaikeli.service.impl;
  2. import cn.hutool.core.util.NumberUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.malk.kuaikeli.service.KKLService;
  6. import com.malk.server.aliwork.YDConf;
  7. import com.malk.server.aliwork.YDParam;
  8. import com.malk.service.aliwork.YDClient;
  9. import com.malk.service.aliwork.YDService;
  10. import com.malk.utils.UtilMap;
  11. import com.malk.utils.UtilMc;
  12. import com.malk.utils.UtilNumber;
  13. import lombok.SneakyThrows;
  14. import lombok.Synchronized;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.*;
  19. import java.util.stream.Collectors;
  20. @Service
  21. @Slf4j
  22. public class KKLImplService implements KKLService {
  23. @Autowired
  24. private YDService ydService;
  25. /**
  26. * [动态] 发起单据, 分供应商进行流程推送
  27. */
  28. @Override
  29. public void matchSupplier(Map data) {
  30. // ppExt: 供应商区分发起: 当前表:供应供子表组件ID,子表内供应商编号,名称,负责人
  31. String[] compIds_supplier = String.valueOf(data.get("compId_supplier")).split(", ");
  32. String compId_supplier = compIds_supplier[1];
  33. Map formData = (Map) JSON.parse(String.valueOf(data.get("formData")));
  34. List<Map> details = (List<Map>) formData.get(compIds_supplier[0]);
  35. // 供应商编号, 数据去重: 提取数据区分供应商发起
  36. List<Map> suppliers = UtilMc.distinctByKey(details, compId_supplier);
  37. for (Map supplier : suppliers) {
  38. List<Map> dataList = details.stream().filter(item -> supplier.get(compId_supplier).equals(item.get(compId_supplier))).collect(Collectors.toList());
  39. formData.put(compIds_supplier[0], dataList);
  40. // ppExt: 参数传递, 目标表组件ID, 对照当前表子表内的子表内供应商编号,名称,负责人已放置主表字段, 此处公共内容提前首条数据进行赋值
  41. for (int i = 1; i < compIds_supplier.length; i++) {
  42. formData.put(compIds_supplier[i], YDConf.getDataByCompId(dataList.get(0), compIds_supplier[i]));
  43. }
  44. data.put("formData", JSON.toJSONString(formData));
  45. ydService.copyFormData(data); // 发起流程
  46. }
  47. }
  48. @Autowired
  49. private YDClient ydClient;
  50. /**
  51. * 菜单计划, 编辑校验
  52. * -
  53. * 前端提交动作: 校验是否审批通过, 是否当日之前计划, 是否当日且在16点及以后时间, 均不允许提交
  54. * 后端校验返回、加任何产品都要走审批,减少20%以内直接过,每一个原材料
  55. */
  56. @Override
  57. public boolean validateApprove(Map data) {
  58. boolean approve = false;
  59. List<Map> dataList = UtilMap.getList(data, "list");
  60. for (Map row : dataList) {
  61. // 匹配切配工作单, 采购
  62. List<Map> formList = (List<Map>) ydClient.queryData(YDParam.builder()
  63. .formUuid("FORM-RK966E71T0LDSTW39WFHE9OQ5GU23FKRRDNLL2")
  64. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lmsuq8am, textField_lm8zta2z, textField_ln1ez5li", data.get("name"), data.get("area"), row.get("textField_ln1ez5li"))))
  65. .build(),
  66. YDConf.FORM_QUERY.retrieve_search_form).getData();
  67. if (formList.size() == 0) {
  68. approve = true;
  69. break;
  70. }
  71. Map formData = (Map) formList.get(0).get("formData");
  72. float cur = UtilMap.getFloat(row, "numberField_lmym5628");
  73. float src = UtilMap.getFloat(formData, "numberField_lnrkgimz");
  74. if (cur > src || (src - cur) / src > 0.2f) {
  75. approve = true;
  76. break;
  77. }
  78. }
  79. if (approve) {
  80. // 发起菜单审批
  81. log.info("发起菜单审批");
  82. ydClient.operateData(YDParam.builder()
  83. .formUuid("FORM-UP96637100HD036TA1M05B74GHLV3DRS54NLLC")
  84. .processCode("TPROC--UP96637100HD036TA1M05B74GHLV3ERS54NLLD")
  85. .formDataJson(JSON.toJSONString(data.get("form"))) // 前端数据组装
  86. .userId(data.get("user").toString())
  87. .build(), YDConf.FORM_OPERATION.start);
  88. }
  89. // 执行业务逻辑-编辑前后更新计划采购单
  90. log.info("执行业务逻辑-编辑前后更新计划采购单");
  91. planUpdate(UtilMap.getString(data,"poid"),dataList,data.get("user").toString());
  92. return approve;
  93. }
  94. @Override
  95. public void updateState(String id) {
  96. try {
  97. log.info("异步修改状态,休眠3s");
  98. Thread.sleep(3000);
  99. } catch (InterruptedException e) {
  100. e.printStackTrace();
  101. }
  102. // 更新计划状态
  103. ydService.operateData(YDParam.builder()
  104. .formInstanceId(id)
  105. .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_lm8znr9n", "执行中")))
  106. .build(), YDConf.FORM_OPERATION.update);
  107. }
  108. private void planUpdate(String poid,List<Map> dataList,String userId){
  109. String formUuid="FORM-XHA66881J8KDA6V3FM6LZBUP9PDE37VESDNLL6";
  110. Map formData=(Map) ydClient.queryData(YDParam.builder().formInstId(poid).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  111. List<Map> list=UtilMap.getList(formData,"tableField_lln477nw");
  112. saveData(list,formData,formUuid,false,userId);// -
  113. saveData(dataList,formData,formUuid,true,userId);// +
  114. }
  115. private void saveData(List<Map> list,Map formData,String formUuid,boolean isAdd,String userId){
  116. for(Map map:list){
  117. Map queryMap=new HashMap();
  118. queryMap.put("dateField_llndtdwl", Arrays.asList(map.get("dateField_ln1ez5lg"),map.get("dateField_ln1ez5lg")));// 日期
  119. queryMap.put("textField_llq9x6ov",formData.get("textField_lln477nh"));// 项目编号
  120. queryMap.put("textField_lmk97m1v",map.get("textField_lmk97m1v"));// 原材料编号
  121. Map upMap=new HashMap();
  122. upMap.put("numberField_llojyfy3",map.get("numberField_lmsvfftq"));// 成本单价
  123. upMap.put("numberField_llojyfy4",map.get("numberField_lmsvfftr"));// 服务费率
  124. upMap.put("dateField_llndtdwl",map.get("dateField_ln1ez5lg"));// 计划日期
  125. upMap.put("textField_llndm599",map.get("textField_llndm599"));// 原材料名称
  126. upMap.put("textField_lluj4hu1",map.get("textField_lln3lmn2"));// 单位
  127. upMap.put("textField_llq9x6ov",formData.get("textField_lln477nh"));// 项目编号
  128. upMap.put("textField_lm5z7kvo",map.get("textField_ln1ez5li"));// 计划日期(文本)
  129. upMap.put("textField_lm5z4ioi",formData.get("textField_lmsvfftp"));// 项目名称
  130. upMap.put("textField_lmk97m1v",map.get("textField_lmk97m1v"));// 原材料编号
  131. upMap.put("selectField_lmqclyx9",map.get("selectField_lmqclyx9"));// 第一分类
  132. upMap.put("numberField_lmqclyxa",map.get("numberField_lmqclyxa"));// 供货价
  133. upMap.put("textField_lnsmha2j",map.get("textField_lnwxz9ji"));// 品牌
  134. upMap.put("textField_lpjet322",formData.get("textField_lpjet322"));// 档口名称
  135. upMap.put("textField_lpjet321",formData.get("textField_lpjet321"));// 档口编号
  136. upMap.put("textField_loe04txb",map.get("textField_lptgvips"));// 采购单位
  137. List<Map> list2=(List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid).searchFieldJson(JSONObject.toJSONString(queryMap)).build(), YDConf.FORM_QUERY.retrieve_list).getData();
  138. if(list2==null||list2.size()<1){
  139. if(!isAdd){
  140. log.info("未找到对应的计划采购单,退出");
  141. continue;
  142. }
  143. upMap.put("numberField_lln477o2", map.get("numberField_lmym5628"));// 初始采购数量(kg)
  144. upMap.put("numberField_lm9008fq", map.get("numberField_lmym5628"));// 实际采购数量(kg)
  145. upMap.put("numberField_lns0dkzv", map.get("numberField_lns0dkzv"));// 投料数量(kg)
  146. upMap.put("numberField_loe04txa", map.get("numberField_lomyf89l"));// 采购量
  147. ydClient.operateData(YDParam.builder().formUuid(formUuid).formDataJson(JSONObject.toJSONString(upMap)).userId(userId).build(), YDConf.FORM_OPERATION.create);
  148. }else{
  149. Map oldMap=UtilMap.getMap(list2.get(0),"formData");
  150. if(isAdd){
  151. upMap.put("numberField_lln477o2", NumberUtil.add(UtilMap.getString(oldMap,"numberField_lln477o2"),UtilMap.getString(map,"numberField_lmym5628")));// 初始采购数量(kg)
  152. upMap.put("numberField_lm9008fq", NumberUtil.add(UtilMap.getString(oldMap,("numberField_lm9008fq")),UtilMap.getString(map,("numberField_lmym5628"))));// 实际采购数量(kg)
  153. upMap.put("numberField_lns0dkzv", NumberUtil.add(UtilMap.getString(oldMap,("numberField_lns0dkzv")),UtilMap.getString(map,("numberField_lns0dkzv"))));// 投料数量
  154. upMap.put("numberField_loe04txa",NumberUtil.add(UtilMap.getString(oldMap,"numberField_loe04txa"),UtilMap.getString(map,"numberField_lomyf89l")));// 采购量
  155. }else {
  156. upMap.put("numberField_lln477o2", NumberUtil.sub(UtilMap.getString(oldMap, "numberField_lln477o2"), UtilMap.getString(map, "numberField_lmym5628")));// 初始采购数量(kg)
  157. upMap.put("numberField_lm9008fq", NumberUtil.sub(UtilMap.getString(oldMap, ("numberField_lm9008fq")), UtilMap.getString(map, ("numberField_lmym5628"))));// 实际采购数量(kg)
  158. upMap.put("numberField_lns0dkzv", NumberUtil.sub(UtilMap.getString(oldMap, ("numberField_lns0dkzv")), UtilMap.getString(map, ("numberField_lns0dkzv"))));// 投料数量
  159. upMap.put("numberField_loe04txa",NumberUtil.sub(UtilMap.getString(oldMap,"numberField_loe04txa"),UtilMap.getString(map,"numberField_lomyf89l")));// 采购量
  160. }
  161. ydClient.operateData(YDParam.builder().formInstanceId(UtilMap.getString(list2.get(0),"formInstanceId")).updateFormDataJson(JSONObject.toJSONString(upMap)).build(), YDConf.FORM_OPERATION.update);
  162. }
  163. if(isAdd){
  164. // 保存切配工作单
  165. String formUuid2="FORM-RK966E71T0LDSTW39WFHE9OQ5GU23FKRRDNLL2";
  166. Map qMap=new HashMap();
  167. qMap.put("textField_lmsuq8am",formData.get("textField_lln477nh"));// 项目编号
  168. qMap.put("dateField_llndtdwl",Arrays.asList(map.get("dateField_ln1ez5lg"),map.get("dateField_ln1ez5lg")));// 日期
  169. qMap.put("textField_lm8zta2z",formData.get("selectField_llm1i9yl"));// 餐次
  170. qMap.put("selectField_lln3lmn5",map.get("textField_lm4m83rv"));// 切配类型
  171. qMap.put("textField_llndm599",map.get("textField_llndm599"));// 原材料名称
  172. Map addMap=new HashMap();
  173. addMap.putAll(qMap);
  174. String data=String.valueOf(formData.get("associationFormField_lln477nb_id"));
  175. addMap.put("associationFormField_llndtdwg",JSONObject.parseArray(data.substring(1,data.length()-1).replaceAll("\\\\","")));// 项目点
  176. addMap.put("numberField_lln477o2",map.get("numberField_lmym5628"));// 数量(kg)
  177. addMap.put("numberField_lnrkgimz",map.get("numberField_lomyf89l"));// 初始采购数量
  178. addMap.put("textField_ln1ez5li",map.get("textField_ln1ez5li"));// 计划日期(文本)
  179. addMap.put("dateField_llndtdwl",map.get("dateField_ln1ez5lg"));// 日期
  180. List<Map> list3=(List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid2).searchFieldJson(JSONObject.toJSONString(qMap)).build(),
  181. YDConf.FORM_QUERY.retrieve_list).getData();
  182. if(list3==null||list3.size()<1){
  183. ydClient.operateData(YDParam.builder().formUuid(formUuid2)
  184. .formDataJson(JSONObject.toJSONString(addMap))
  185. .userId(userId)
  186. .build(), YDConf.FORM_OPERATION.create);
  187. }else{
  188. ydClient.operateData(YDParam.builder().formInstanceId(UtilMap.getString(list3.get(0),"formInstanceId"))
  189. .updateFormDataJson(JSONObject.toJSONString(addMap))
  190. .build(), YDConf.FORM_OPERATION.update);
  191. }
  192. }
  193. }
  194. }
  195. /**
  196. * 定价单: 项目点 & 供应商大类, 数据匹配
  197. */
  198. @Override
  199. @SneakyThrows
  200. @Synchronized
  201. public void serviceRate(Map data) {
  202. // todo2: 宜搭更新,校验的超时等待在3s, 因此方法修改为异步. 容错定时任务?匹配不一致数据
  203. String supperCode = String.valueOf(data.get("code"));
  204. List<String> types = (List<String>) JSON.parse(String.valueOf(data.get("type")));
  205. List<String> rates = (List<String>) JSON.parse(String.valueOf(data.get("rate")));
  206. List<String> rates2 = (List<String>) JSON.parse(String.valueOf(data.get("rate2")));
  207. List<String> status = (List<String>) JSON.parse(String.valueOf(data.get("status")));
  208. for (int i = 0; i < types.size(); i++) {
  209. List<Map> materials = supperMaterials(supperCode, types.get(i));
  210. List<Map> records = projectMaterials(supperCode, types.get(i));
  211. log.info("定价单同步, {}, {}", materials.size(), records.size());
  212. for (Map material : materials) {
  213. // 数据处理: 服务费率与供货价, 项目信息
  214. double rate = Double.valueOf(rates.get(i));
  215. double rate2 = Double.valueOf(rates2.get(i));
  216. material.putAll(UtilMap.map("numberField_llkb7kcy, numberField_lpalgz04, textField_lm4lxur8", rate, rate2, status.get(i)));
  217. double price1 = UtilNumber.formatPrecisionValue(UtilMap.getDouble(material, "numberField_llkknd6g") * (rate + 100) / 100f);
  218. double price2 = UtilNumber.formatPrecisionValue(UtilMap.getDouble(material, "numberField_lpalgz05") * (100 + rate2) / 100f);
  219. material.putAll(UtilMap.map("numberField_llkknd6h, numberField_lpalgz0a", price1, price2));
  220. material.putAll(UtilMap.map("textField_llm1vtjm, textField_loy1ep8r", data.get("proCode"), data.get("proName")));
  221. YDParam ydParam = YDParam.builder()
  222. .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
  223. .formDataJson(JSON.toJSONString(material))
  224. .build();
  225. YDConf.FORM_OPERATION operation = YDConf.FORM_OPERATION.create;
  226. // ppExt: 提交校验逻辑, 匹配定价单数若存在则匹配服务费率, 不一致执行更新
  227. if (records.size() > 0) {
  228. Optional optional = records.stream().filter(item -> item.get("textField_llkb7kd2").equals(material.get("textField_llkb7kd2"))).findAny();
  229. if (optional.isPresent()) {
  230. ydParam.setUpdateFormDataJson(JSON.toJSONString(material));
  231. ydParam.setFormInstanceId(String.valueOf(((Map) optional.get()).get("formInstanceId")));
  232. operation = YDConf.FORM_OPERATION.update;
  233. }
  234. }
  235. ydClient.operateData(ydParam, operation);
  236. }
  237. }
  238. }
  239. /// 原材料: 供应商第一分类下物料
  240. List<Map> supperMaterials(String code, String type) {
  241. List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
  242. .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
  243. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbyj1, selectField_llkk6cms", code, type)))
  244. .build());
  245. log.info("supperMaterials, {}", dataList.size());
  246. return dataList;
  247. }
  248. /// 定价单: 供应商第一分类下物料
  249. List<Map> projectMaterials(String code, String type) {
  250. List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
  251. .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
  252. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbyj1, selectField_llkk6cms", code, type)))
  253. .build());
  254. log.info("projectMaterials, {}", dataList.size());
  255. return dataList;
  256. }
  257. /**
  258. * 物料档案: 价格调整
  259. */
  260. @Override
  261. public void adjustCost(Map data) {
  262. double cost1 = UtilMap.getDouble(data, "costPrice");
  263. double cost2 = UtilMap.getDouble(data, "nextCostPrice");
  264. String cost3 = UtilMap.getString(data,"timeLimit");
  265. //todo2: 服务执行, 周日凌晨更新价格前, 是否重新匹配数据?
  266. List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
  267. .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
  268. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("itemNumber"))))
  269. .build());
  270. log.info("adjustCost, {}", dataList.size());
  271. for (Map record : dataList) {
  272. // if (cost1 == UtilMap.getDouble(record, "numberField_llkknd6g") && cost2 == UtilMap.getDouble(record, "numberField_lpalgz05")) {
  273. // continue;
  274. // }
  275. double rate = UtilMap.getDouble(record, "numberField_llkb7kcy");
  276. double rate2 = UtilMap.getDouble(record, "numberField_lpalgz04");
  277. double price1 = UtilNumber.formatPrecisionValue(cost1 * (rate + 100) / 100f);
  278. double price2 = UtilNumber.formatPrecisionValue(cost2 * (100 + rate2) / 100f);
  279. Map update = UtilMap.map("numberField_llkknd6h, numberField_lpalgz0a", price1, price2);
  280. update.putAll(UtilMap.map("numberField_llkknd6g, numberField_lpalgz05, dateField_lm4lxur7", cost1, cost2, cost3 ));
  281. ydClient.operateData(YDParam.builder()
  282. .formInstanceId(String.valueOf(record.get("formInstanceId")))
  283. .updateFormDataJson(JSON.toJSONString(update))
  284. .build(), YDConf.FORM_OPERATION.update);
  285. }
  286. }
  287. /**
  288. * 供应商原材料档案: 新增匹配
  289. */
  290. @Override
  291. public void additionMaterial(Map data) {
  292. // 通过供应商编号 查询项目
  293. List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
  294. .formUuid("FORM-W2A66Z91B4KDWDIAA7SI1BRBRTKM3XL87BKLL0")
  295. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbai8", data.get("gysNumber"))))
  296. .build());
  297. dataList.forEach(dataItem -> {
  298. List<Map> mapList = (List<Map>) dataItem.get("tableField_llq74mwk");
  299. // 这里对比第二分类 selectField_llq74mwl ==> selectField_lv3v3911
  300. List<Map> maps = mapList.stream().filter(items -> items.get("selectField_lv3v3911").equals(data.get("firstName"))).collect(Collectors.toList());
  301. if(maps.size()>0){
  302. List<Map> goodList = ydService.queryFormData_all(YDParam.builder()
  303. .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
  304. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("goodNumber"))))
  305. .build());
  306. Map goodMap = goodList.get(0);
  307. Map hashMap = new HashMap();
  308. hashMap.put("textField_llzzbyj1",data.get("gysNumber")); //供应商编号
  309. hashMap.put("textField_lmsli3bq",dataItem.get("textField_lmsli3bq")); //供应商名称
  310. hashMap.put("textField_llm1vtjm",dataItem.get("textField_lllovku7")); //项目编号
  311. hashMap.put("textField_loy1ep8r",dataItem.get("textField_loy1ep8r"));//项目名称
  312. hashMap.put("textField_llkb7kd2",data.get("goodNumber")); //物品编号
  313. hashMap.put("textField_llkb7kd1",goodMap.get("textField_llkb7kd1")); //物品名称
  314. hashMap.put("textField_llkb7kd3",goodMap.get("textField_llkb7kd3")); //单位
  315. hashMap.put("textField_llkb7kd4",goodMap.get("textField_llkb7kd4")); //规格
  316. hashMap.put("selectField_llkb7kd5",data.get("firstName")); //第一分类
  317. hashMap.put("selectField_llkk6cms",goodMap.get("selectField_llkk6cms")); //第二分类
  318. double rate = UtilMap.getDouble(maps.get(0), "numberField_llq74mwm"); //本周费率
  319. double rate2 = UtilMap.getDouble(maps.get(0), "numberField_lpplr3im"); //下周费率
  320. double pce1 = UtilMap.getDouble(goodMap, "numberField_llkknd6g"); //成本单价
  321. double pce2 = UtilMap.getDouble(goodMap, "numberField_lpalgz05"); //下周成本单价
  322. double price1 = UtilNumber.formatPrecisionValue(pce1 * (rate + 100) / 100f); //下周成本价
  323. double price2 = UtilNumber.formatPrecisionValue(pce2 * (rate2 + 100 ) / 100f); //下周供货价
  324. hashMap.put("numberField_llkb7kcy",rate); //服务费率
  325. hashMap.put("numberField_lpalgz04",rate2); //下周服务费率
  326. hashMap.put("numberField_llkknd6g",pce1); //成本单价
  327. hashMap.put("numberField_lpalgz05",pce2); //下周成本单价
  328. hashMap.put("numberField_llkknd6h",price1); //供货价
  329. hashMap.put("numberField_lpalgz0a",price2); //下周供货价
  330. hashMap.put("dateField_lm4lxur7",goodMap.get("dateField_lm4lxur7")); //期限
  331. hashMap.put("textField_lm4lxur8","已启用"); //状态
  332. hashMap.put("numberField_lnrzzg03",goodMap.get("numberField_lnrzzg03")); //包装数量
  333. hashMap.put("textField_lnrzzg04",goodMap.get("textField_lnrzzg04")); //包装单位
  334. log.info("hashMap,{}", JSON.toJSONString(hashMap));
  335. ydClient.operateData(YDParam.builder()
  336. .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
  337. .formDataJson(JSON.toJSONString(hashMap))
  338. .build(), YDConf.FORM_OPERATION.create);
  339. }
  340. });
  341. }
  342. /**
  343. * 周日同步更新价格
  344. */
  345. @Override
  346. @SneakyThrows
  347. public void syncPrice() {
  348. // 定价单明细表
  349. List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
  350. .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
  351. .build());
  352. for (Map record : dataList) {
  353. double price1 = UtilMap.getDouble(record, "numberField_llkknd6h");
  354. double price2 = UtilMap.getDouble(record, "numberField_lpalgz0a");
  355. if (price1 == price2) {
  356. continue;
  357. }
  358. // 本质上是对比供货价差异, 下周全覆盖
  359. Map update = UtilMap.map("numberField_llkknd6h, numberField_llkb7kcy, numberField_llkknd6g", price2, record.get("numberField_lpalgz04"), record.get("numberField_lpalgz05"));
  360. ydClient.operateData(YDParam.builder()
  361. .formInstanceId(String.valueOf(record.get("formInstanceId")))
  362. .updateFormDataJson(JSON.toJSONString(update))
  363. .build(), YDConf.FORM_OPERATION.update);
  364. }
  365. // 供应商原材料表
  366. List<Map> dataList2 = ydService.queryFormData_all(YDParam.builder()
  367. .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
  368. .build());
  369. for (Map record : dataList2) {
  370. double cost1 = UtilMap.getDouble(record, "numberField_llkknd6g");
  371. double cost2 = UtilMap.getDouble(record, "numberField_lpalgz05");
  372. if (cost1 == cost2) {
  373. continue;
  374. }
  375. Map update = UtilMap.map("numberField_llkknd6g", cost2);
  376. ydClient.operateData(YDParam.builder()
  377. .formInstanceId(String.valueOf(record.get("formInstanceId")))
  378. .updateFormDataJson(JSON.toJSONString(update))
  379. .build(), YDConf.FORM_OPERATION.update);
  380. }
  381. }
  382. }