ChenyixunServiceImpl.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package com.malk.chenyixun.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.google.common.base.Strings;
  5. import com.malk.chenyixun.service.ChenyixunService;
  6. import com.malk.server.aliwork.YDConf;
  7. import com.malk.server.aliwork.YDParam;
  8. import com.malk.server.dingtalk.DDR_New;
  9. import com.malk.service.aliwork.YDClient;
  10. import com.malk.utils.UtilMap;
  11. import org.apache.commons.lang3.StringEscapeUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.scheduling.annotation.Async;
  14. import org.springframework.stereotype.Service;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. @Service
  20. public class ChenyixunServiceImpl implements ChenyixunService {
  21. @Autowired
  22. private YDClient ydClient;
  23. @Async
  24. @Override
  25. public void sync1(Map map) {
  26. String formInstId = UtilMap.getString(map, "formInstId");
  27. Map formData = ydClient.queryData(YDParam.builder()
  28. .formInstId(formInstId)
  29. .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  30. List<Map> cwclr = UtilMap.getList(formData,"employeeField_mf0xew5w_id");//车务处理人
  31. Object jhdhsj = formData.get("dateField_mb5wl2kv");//计划到货时间
  32. List<Map> gys = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb5wl2kq_id"));//供应商
  33. String gysbh = UtilMap.getString(formData,"textField_mb97iaeh");//供应商编号
  34. String gysmc = UtilMap.getString(formData,"textField_mcu6kvlh");//供应商名称
  35. List<Map> cghtdd = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb97iaei_id"));//采购合同订单关联表单
  36. String cghtddbh = UtilMap.getString(formData,"serialNumberField_mb5wl2kl");//采购合同订单编号
  37. List<Map> fqr = UtilMap.getList(formData,"employeeField_mb5wl2kj_id");//发起人
  38. List<Map> carList = getYdInnerTableList("FORM-B940BDA5D34647E9B7923C9F9FB43B24S19P",formInstId,"tableField_mcn18skj");//采购合同订单车辆清单子表
  39. for (Map car : carList) {
  40. Map carFormData = new HashMap();
  41. carFormData.put("textField_mcn3vgm4",car.get("textField_mcn3vgm4"));//车辆编号
  42. carFormData.put("associationFormField_mcn18skl",convertAssociationFormField(UtilMap.getString(car,"associationFormField_mcn18skl_id")));//车辆选择
  43. carFormData.put("textField_mcn18sko",car.get("textField_mcn18sko"));//车架号
  44. carFormData.put("textField_mcn18skn",car.get("textField_mcn18skn"));//车型配置
  45. carFormData.put("dateField_mb5wl2kv",jhdhsj);//计划到货时间
  46. carFormData.put("employeeField_mcn5ez9k",cwclr);//车务处理人
  47. carFormData.put("employeeField_mb5wl2kj",fqr);//发起人
  48. carFormData.put("associationFormField_mb97iaei",cghtdd);//采购合同订单关联表单
  49. carFormData.put("associationFormField_mb5wl2kq",gys);//供应商
  50. carFormData.put("textField_mb97iaeh",gysbh);//供应商编号
  51. carFormData.put("textField_mbpvv7vc",cghtddbh);//采购合同订单编号
  52. carFormData.put("textField_mcu4ue56",car.get("textField_mcu4ue56"));//车型编号
  53. carFormData.put("textField_mcu6igax",gysmc);//供应商名称
  54. ydClient.operateData(YDParam.builder()
  55. .formUuid("FORM-01B84B082A364F3AAE6FCB905B1860F0JL1H")//采购合同车辆清单中间表
  56. .formDataJson(JSONObject.toJSONString(carFormData))
  57. .build(), YDConf.FORM_OPERATION.create);
  58. }
  59. }
  60. @Async
  61. @Override
  62. public void sync2(Map map) {
  63. String formInstId = UtilMap.getString(map, "formInstId");
  64. Map formData = ydClient.queryData(YDParam.builder()
  65. .formInstId(formInstId)
  66. .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  67. List<Map> kh = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb5uutk8_id"));//客户
  68. String khbh = UtilMap.getString(formData,"textField_mb7jzz6z");//客户编号
  69. List<Map> xshtdd = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb8s60wl_id"));//销售合同订单关联表单
  70. String xshtddbh = UtilMap.getString(formData,"serialNumberField_mb5uutk0");//销售合同订单编号
  71. List<Map> khhtda = convertAssociationFormField(UtilMap.getString(formData, "associationFormField_mcmq5gec_id"));//客户合同档案关联表单
  72. String khhtbh = UtilMap.getString(formData,"textField_mcmq5ged");//客户合同编号
  73. List<String> cw = UtilMap.getList(formData,"checkboxField_mcn18skp");//车务
  74. List<Map> carList = getYdInnerTableList("FORM-A2BD5F465D16475FB0E95EAD25BBE6ABRYU2",formInstId,"tableField_mcn18skj");//销售合同订单车辆清单子表
  75. for (Map car : carList) {
  76. Map carFormData = new HashMap();
  77. carFormData.put("associationFormField_mcn18skl",convertAssociationFormField(UtilMap.getString(car,"associationFormField_mcn18skl_id")));//车辆选择
  78. carFormData.put("textField_mcn18sko",car.get("textField_mcn18sko"));//车架号
  79. carFormData.put("textField_mcn18skn",car.get("textField_mcn18skn"));//车型配置
  80. carFormData.put("textField_mco7usdr",car.get("textField_mco7usdr"));//UUID
  81. carFormData.put("associationFormField_mb8s60wl",xshtdd);//销售合同订单关联表单
  82. carFormData.put("textField_mcu7umpx",xshtddbh);//销售合同订单编号
  83. carFormData.put("associationFormField_mcmq5gec",khhtda);//客户合同档案关联表单
  84. carFormData.put("textField_mcmq5ged",khhtbh);//客户合同编号
  85. carFormData.put("associationFormField_mb5uutk8",kh);//客户选择
  86. carFormData.put("textField_mb7jzz6z",khbh);//客户编号
  87. carFormData.put("checkboxField_mcn18skp",cw);//车务
  88. ydClient.operateData(YDParam.builder()
  89. .formUuid("FORM-AC1FD7BF8F6C4FAF926B067EBD85B942PWOR")//销售合同车辆清单中间表
  90. .formDataJson(JSONObject.toJSONString(carFormData))
  91. .build(), YDConf.FORM_OPERATION.create);
  92. }
  93. }
  94. @Async
  95. @Override
  96. public void sync3(Map map) {
  97. String formInstId = UtilMap.getString(map, "formInstId");
  98. Map formData = ydClient.queryData(YDParam.builder()
  99. .formInstId(formInstId)
  100. .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  101. List<Map> khhtda = convertAssociationFormField(UtilMap.getString(formData, "associationFormField_mbj0epft_id"));//客户合同档案关联表单
  102. String khhdbh = UtilMap.getString(formData, "textField_mbhjyvev");//客户合同编号
  103. String xshtddbh = UtilMap.getString(formData, "textField_mbhjyvee");//销售合同订单编号
  104. Map updateFormData = new HashMap();
  105. updateFormData.put("associationFormField_mbhn6ixw",khhtda);
  106. updateFormData.put("textField_mbj1dpay",khhdbh);
  107. List<Map> carList = getYdFormDataList("FORM-4B9A81B17E34471D8B3DA1ADC2C53A77U2EU", JSONObject.toJSONString(UtilMap.map("textField_mbj1dpaw", xshtddbh)), YDConf.FORM_QUERY.retrieve_list);
  108. for (Map car : carList) {
  109. String formInstanceId = UtilMap.getString(car, "formInstanceId");
  110. Map carFormData = UtilMap.getMap(car, "formData");
  111. String carkhhtbh = UtilMap.getString(carFormData, "textField_mbj1dpay");
  112. if (Strings.isNullOrEmpty(carkhhtbh)){
  113. ydClient.operateData(YDParam.builder()
  114. .formInstanceId(formInstanceId)
  115. .updateFormDataJson(JSONObject.toJSONString(updateFormData))
  116. .build(), YDConf.FORM_OPERATION.update);
  117. }
  118. }
  119. }
  120. private List<Map> convertAssociationFormField(String jsonString) {
  121. String jsonString2 = StringEscapeUtils.unescapeJava(jsonString.substring(1, jsonString.length() - 1));//新供应商(关联表单)
  122. List<Map> associationFormField =(List<Map>) JSONArray.parse(jsonString2);
  123. return associationFormField;
  124. }
  125. private List<Map> getYdInnerTableList(String formUuid,String formInstId,String tableFieldId) {
  126. List<Map> list = new ArrayList<>();
  127. DDR_New ddrNew;
  128. int pageNumber = 1;
  129. int pageSize = 50;
  130. do {
  131. ddrNew = ydClient.queryData(YDParam.builder()
  132. .formUuid(formUuid)
  133. .formInstanceId(formInstId)
  134. .tableFieldId(tableFieldId)
  135. .pageNumber(pageNumber)
  136. .pageSize(pageSize).build(), YDConf.FORM_QUERY.retrieve_details);
  137. list.addAll((List<Map>) ddrNew.getData());
  138. pageNumber++;
  139. }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
  140. return list;
  141. }
  142. private List<Map> getYdFormDataList(String formUuid, String searchCondition, YDConf.FORM_QUERY formQuery) {
  143. List<Map> list = new ArrayList<>();
  144. DDR_New ddrNew = new DDR_New();
  145. int pageNumber = 1;
  146. int pageSize = 100;
  147. do {
  148. ddrNew = ydClient.queryData(YDParam.builder().formUuid(formUuid)
  149. .searchCondition(searchCondition)
  150. .pageNumber(pageNumber)
  151. .pageSize(pageSize).build(), formQuery);
  152. list.addAll((List<Map>) ddrNew.getData());
  153. pageNumber++;
  154. }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
  155. return list;
  156. }
  157. }