TSController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. package com.malk.taisen.controller;
  2. /**
  3. * 错误抛出与拦截详见 CatchException
  4. */
  5. import com.alibaba.fastjson.JSON;
  6. import com.malk.server.aliwork.YDConf;
  7. import com.malk.server.aliwork.YDParam;
  8. import com.malk.server.common.McException;
  9. import com.malk.server.common.McR;
  10. import com.malk.server.dingtalk.DDR_New;
  11. import com.malk.service.aliwork.YDClient;
  12. import com.malk.service.aliwork.YDService;
  13. import com.malk.utils.UtilDateTime;
  14. import com.malk.utils.UtilMap;
  15. import com.malk.utils.UtilServlet;
  16. import com.malk.utils.UtilString;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.web.bind.annotation.PostMapping;
  20. import org.springframework.web.bind.annotation.RequestBody;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import javax.servlet.http.HttpServletRequest;
  24. import java.util.Collections;
  25. import java.util.Date;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.stream.Collectors;
  29. @Slf4j
  30. @RestController
  31. @RequestMapping
  32. public class TSController {
  33. @Autowired
  34. private YDClient ydClient;
  35. @Autowired
  36. private YDConf ydConf;
  37. @Autowired
  38. private YDService ydService;
  39. /**
  40. * 保存提交版本
  41. */
  42. @PostMapping("backend")
  43. McR backend(HttpServletRequest request) {
  44. Map data = UtilServlet.getParamMap(request);
  45. log.info("保存提交版本, {}", data);
  46. McException.assertParamException_Null(data, "instanceId, type");
  47. if ("手动同步".equals(data.get("type"))) {
  48. return McR.success();
  49. }
  50. // type 自动备份: 原报销单提交后同步, 手动同步: 版本备份报价单提交后更新
  51. String instanceId = String.valueOf(data.get("instanceId"));
  52. String updateInstanceId = String.valueOf(data.get("updateInstanceId"));
  53. Map update = UtilMap.map("radioField_lp9wi7lb, textField_lowp416t", data.get("type"), instanceId);
  54. ydService.mirrorFormData(instanceId, "FORM-L8966281S0WF1JA4AWGDM4QC94TS2E3US8WOLO5", "TPROC--L896628148XFT9KDB3IHI5M14A8W2V7US8WOL1", update, updateInstanceId);
  55. return McR.success();
  56. }
  57. /**
  58. * 恢复报销明细
  59. */
  60. @PostMapping("recover")
  61. McR recover(@RequestBody Map<String, String> data) {
  62. String cId = data.get("cId");
  63. String sId = data.get("sId");
  64. Map formData = ydClient.queryData(YDParam.builder()
  65. .formInstanceId(cId)
  66. .build(),
  67. YDConf.FORM_QUERY.retrieve_id).getFormData();
  68. List<Map> details = ((List<Map>) formData.get("tableField_l6lmxo5r")).stream().map(item -> {
  69. item.put("associationFormField_l6vk2yxg", JSON.parse(String.valueOf(item.get("associationFormField_l6vk2yxg_id"))));
  70. item.put("associationFormField_l6napwww", JSON.parse(String.valueOf(item.get("associationFormField_l6napwww_id"))));
  71. return item;
  72. }).collect(Collectors.toList());
  73. Map updateForm = UtilMap.map("tableField_l6lmxo5r, associationFormField_l83trmls", details, JSON.parse(String.valueOf(formData.get("associationFormField_l83trmls"))));
  74. ydClient.operateData(YDParam.builder()
  75. .formInstanceId(sId)
  76. .updateFormDataJson(JSON.toJSONString(updateForm)).build(), YDConf.FORM_OPERATION.update);
  77. return McR.success(formData);
  78. }
  79. ///// 数据修复
  80. @PostMapping("test11")
  81. McR test11() {
  82. // 丢行处理
  83. // 孙静
  84. // String tId = "f54bb1ab-e989-4b61-ad9b-7cd9e2dab69b";
  85. // String sId = "62f796fd-b35d-4db8-85ad-c14dbc2050ad";
  86. // 陈黛珠
  87. // String tId = "96af9edc-83cb-4027-9687-8ec0e1cbd4eb";
  88. // String sId = "5005d16d-a392-43a6-bdcb-c1ae93d30deb";
  89. // 陈豹
  90. // String tId = "640cff6e-89fb-4d50-9c45-aa2fcf8b06d5";
  91. // String sId = "13dfaba7-7f27-4f51-bcb6-5c8d71b758c1";
  92. //
  93. String tId = "7cd24af9-2ab2-4c70-b723-4db5b75089e4";
  94. String sId = "06aec1b9-7023-49aa-b607-cacafae6f9f6";
  95. Map formData = ydClient.queryData(YDParam.builder()
  96. .formInstanceId(tId)
  97. .build(),
  98. YDConf.FORM_QUERY.retrieve_id).getFormData();
  99. List<Map> details = ((List<Map>) formData.get("tableField_l6lmxo5r")).stream().map(item -> {
  100. item.put("associationFormField_l6vk2yxg", JSON.parse(item.get("associationFormField_l6vk2yxg_id").toString()));
  101. item.put("associationFormField_l6napwww", JSON.parse(String.valueOf(item.get("associationFormField_l6napwww_id"))));
  102. // 关联申请
  103. // List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
  104. // .formUuid("FORM-78766VC1KTX2HZQ6E6IR3CYXWUFU3RO8RGN6L6")
  105. // .searchFieldJson(JSON.toJSONString(UtilMap.map("employeeField_l82gi80j, numberField_l6ngrh2h", formData.get("employeeField_l843wfsm_id"), Arrays.asList(item.get("numberField_l6lmxo60"), item.get("numberField_l6lmxo60")))))
  106. // .build(),
  107. // YDConf.FORM_QUERY.retrieve_search_form).getData();
  108. // item.put("associationFormField_l6napwww", ydConf.associationForm("FORM-78766VC1KTX2HZQ6E6IR3CYXWUFU3RO8RGN6L6", dataList.get(0).get("formInstanceId").toString(), "深圳", null, false));
  109. return item;
  110. }).collect(Collectors.toList());
  111. Map updateForm = UtilMap.map("tableField_l6lmxo5r", details);
  112. ydClient.operateData(YDParam.builder()
  113. .formInstanceId(sId)
  114. .updateFormDataJson(JSON.toJSONString(updateForm)).build(), YDConf.FORM_OPERATION.update);
  115. return McR.success(formData);
  116. }
  117. // 当前表税率为0处理
  118. @PostMapping("test13")
  119. McR test13() {
  120. String fid = "6f565a2f-a605-4f01-93c2-db177e2118c5";
  121. Map formData = ydClient.queryData(YDParam.builder()
  122. .formInstanceId(fid)
  123. .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  124. List<Map> details = (List<Map>) formData.get("tableField_l6lmxo5r");
  125. details.forEach(item -> {
  126. if (UtilString.isBlankCompatNull(String.valueOf(item.get("numberField_l6lmxo61")))) {
  127. item.put("numberField_l6lmxo61", 0);
  128. }
  129. item.put("associationFormField_l6vk2yxg", JSON.parse(String.valueOf(item.get("associationFormField_l6vk2yxg_id"))));
  130. item.put("associationFormField_l6napwww", JSON.parse(String.valueOf(item.get("associationFormField_l6napwww_id"))));
  131. log.info("xxxx, {}", item.get("numberField_l6lmxo61"));
  132. });
  133. Map updateForm = UtilMap.map("tableField_l6lmxo5r", details);
  134. ydClient.operateData(YDParam.builder()
  135. .formInstanceId(fid)
  136. .updateFormDataJson(JSON.toJSONString(updateForm)).build(), YDConf.FORM_OPERATION.update);
  137. return McR.success(updateForm);
  138. }
  139. // 修改报销金额
  140. @PostMapping("test15")
  141. McR test15() {
  142. String fid = "6f565a2f-a605-4f01-93c2-db177e2118c5";
  143. Map formData = ydClient.queryData(YDParam.builder()
  144. .formInstanceId(fid)
  145. .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  146. List<Map> details = (List<Map>) formData.get("tableField_l6lmxo5r");
  147. details.forEach(item -> {
  148. if (UtilMap.getFloat(item, "numberField_l6napwwi") == 146.66f || UtilMap.getFloat(item, "numberField_l6napwwi") == 235f || UtilMap.getFloat(item, "numberField_l6napwwi") == 162.66f) {
  149. item.put("numberField_l6napwwi", 0);
  150. }
  151. item.put("associationFormField_l6vk2yxg", JSON.parse(String.valueOf(item.get("associationFormField_l6vk2yxg_id"))));
  152. item.put("associationFormField_l6napwww", JSON.parse(String.valueOf(item.get("associationFormField_l6napwww_id"))));
  153. log.info("xxxx, {}", item.get("numberField_l6napwwi"));
  154. });
  155. details = details.stream().filter(item -> UtilMap.getFloat(item, "numberField_l6napwwi") > 0f).collect(Collectors.toList());
  156. Map updateForm = UtilMap.map("tableField_l6lmxo5r, numberField_l6lmxo6h, textField_l6bynqte", details, 1788, "壹仟柒佰捌拾捌元整");
  157. ydClient.operateData(YDParam.builder()
  158. .formInstanceId(fid)
  159. .updateFormDataJson(JSON.toJSONString(updateForm)).build(), YDConf.FORM_OPERATION.update);
  160. return McR.success(updateForm);
  161. }
  162. // 变更记录
  163. @PostMapping("changed")
  164. McR changed() {
  165. for (int i = 1; i <= 55; i++) {
  166. List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
  167. .formUuid("FORM-UX866Q61LRK2LACIB8A6M6T1ZOLM2VY5NYB6LZ")
  168. .pageNumber(i)
  169. .currentPage(i)
  170. .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
  171. Map<String, List<Map>> record = ydClient.queryData(YDParam.builder()
  172. .formUuid("FROM-UX866Q61LRK2LACIB8A6M6T1ZOLM2VY5NYB6LZ")
  173. .formInstanceIdList(dataList.stream().map(item -> String.valueOf(item.get("formInstanceId"))).collect(Collectors.toList()))
  174. .build(), YDConf.FORM_QUERY.retrieve_changed).getOperationLogMap();
  175. for (String id : record.keySet()) {
  176. Map form = dataList.stream().filter(item -> item.get("formInstanceId").equals(id)).findAny().get();
  177. Map data = (Map) form.get("formData");
  178. Map formData = UtilMap.map("associationFormField_lnukdrl8", ydConf.associationForm("FORM-UX866Q61LRK2LACIB8A6M6T1ZOLM2VY5NYB6LZ", id, String.valueOf(form.get("title")), null, true));
  179. formData.put("textField_lnulmox7", data.get("textField_l7a7bf8d"));
  180. formData.put("employeeField_lnulmox8", data.get("employeeField_l843wfsm_id"));
  181. List<Map> details = record.get(id).stream().map(item -> UtilMap.map("textField_lnukfzeh, textField_lnukfzei, textField_lnukfzej, textField_lnukfzel, textField_lnukfzek, textField_lnukfzem",
  182. item.get("currentText"), item.get("preText"), item.get("gmtModified"), item.get("componentName"), item.get("operationType"), UtilMap.getMap(item, "operator").get("displayName")))
  183. .collect(Collectors.toList());
  184. formData.put("tableField_lnukfzeg", details);
  185. ydClient.operateData(YDParam.builder()
  186. .formUuid("FORM-4W8667D1440FEE4PFEX586YVOCEN3EXFDKUNLB1")
  187. .formDataJson(JSON.toJSONString(formData))
  188. .build(), YDConf.FORM_OPERATION.create);
  189. }
  190. }
  191. return McR.success();
  192. }
  193. /// 广舜临时修改
  194. @PostMapping("gc")
  195. McR gc() {
  196. // ydClient.operateData(YDParam.builder()
  197. // .formInstanceId("39e50d18-fcd4-4b19-b825-23d421a255ff")
  198. // .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_llalwnd7", "HA0051C")))
  199. // .build(), YDConf.FORM_OPERATION.update);
  200. List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
  201. .formUuid("FORM-08866RA1SPVC8CISDK79NBIXH4ZT3CBF61MKL0")
  202. .dynamicOrder(JSON.toJSONString(UtilMap.map("gmt_create", "+")))
  203. .build(), YDConf.FORM_QUERY.retrieve_search_process).getData();
  204. Collections.reverse(dataList);
  205. int i = 1;
  206. for (Map formData : dataList) {
  207. String newS = String.valueOf(UtilMap.getMap(formData, "data").get("textField_llalwnd7"));
  208. if (UtilMap.getMap(formData, "data").containsKey("textField_lmu9nuzp")) {
  209. newS += "-" + String.valueOf(UtilMap.getMap(formData, "data").get("textField_lmu9nuzp"));
  210. } else {
  211. newS += "-" + "M";
  212. }
  213. if (i > 9) {
  214. newS += "00" + i;
  215. } else {
  216. newS += "000" + i;
  217. }
  218. newS += UtilDateTime.format(new Date(Long.valueOf(String.valueOf(UtilMap.getMap(formData, "data").get("dateField_llabt1ft")))), "yyMMdd");
  219. log.info("xxxx, {}, ", newS);
  220. ydClient.operateData(YDParam.builder()
  221. .formInstanceId(String.valueOf(formData.get("processInstanceId")))
  222. .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_lkkmaxdw, serialNumberField_lnlu5r43", newS, newS)))
  223. .build(), YDConf.FORM_OPERATION.update);
  224. i++;
  225. //
  226. }
  227. return McR.success();
  228. }
  229. @PostMapping("test")
  230. McR test(String id, @RequestBody Map data) {
  231. id = "27791e35-0ade-4f58-91ac-0eb62f8db9b6";
  232. // String fd = "FORM-56666571H80F5YH6B53L8AMCU02I2HLC4KLNL5"; // 测试
  233. // String pd = "TPROC--56666571H80F5YH6B53L8AMCU02I29QC4KLNL6";
  234. String fd = "FORM-UX866Q61LRK2LACIB8A6M6T1ZOLM2VY5NYB6LZ"; // 正式
  235. String pd = "TPROC--UX866Q61LRK2LACIB8A6M6T1ZOLM2YY5NYB6L01";
  236. // 重新审批: selectField_lo6wzjxo, 流程结束:selectField_lo6wzjxp
  237. // Object rsp = ydService.mirrorFormData(id, fd, pd, UtilMap.map("selectField_lo6wzjxo, employeeField_lo6wzjxm, employeeField_lo6wzjxn", "是", Arrays.asList("112743683235841523"), Arrays.asList("112743683235841523")));
  238. Object rsp = ydService.mirrorFormData(id, fd, pd, UtilMap.map("selectField_lo6wzjxo, radioField_l8k1azrt", "是", "是"), null);
  239. return McR.success(rsp);
  240. }
  241. @PostMapping("exist")
  242. DDR_New exist(@RequestBody Map data) {
  243. DDR_New ddr_new = ydClient.queryData(YDParam.builder()
  244. .formUuid(String.valueOf(data.get("formUuid")))
  245. .searchFieldJson(JSON.toJSONString(data.get("conditions")))
  246. .build(), YDConf.FORM_QUERY.retrieve_search_form);
  247. return ddr_new;
  248. }
  249. }