GuYuanController.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.malk.guyuan.controller;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.malk.Util.UtilServlet;
  5. import com.malk.server.aliwork.YDConf;
  6. import com.malk.server.aliwork.YDParam;
  7. import com.malk.server.common.McException;
  8. import com.malk.server.common.McR;
  9. import com.malk.server.dingtalk.DDR_New;
  10. import com.malk.service.aliwork.YDClient;
  11. import com.malk.service.aliwork.impl.YDClient_DD;
  12. import com.malk.service.aliyun.ALYInvoice;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.web.bind.annotation.PostMapping;
  16. import org.springframework.web.bind.annotation.RequestBody;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. /**
  25. * 错误抛出与拦截详见CatchException
  26. */
  27. @Slf4j
  28. @RestController
  29. @RequestMapping("/guyuan")
  30. public class GuYuanController {
  31. @Autowired
  32. private ALYInvoice invoice;
  33. @Autowired
  34. private YDClient_DD ydClient_dd;
  35. @Autowired
  36. private YDClient ydClient;
  37. /**
  38. * 阿里发票验真
  39. */
  40. @PostMapping("/invoice/check")
  41. McR invoiceCheckPDF(@RequestBody Map<String, String> param) {
  42. log.info("阿里发票验真, 文件, {}", param);
  43. McException.assertParamException_Null(param, "url");
  44. return McR.success(invoice.invoiceCheckPDF("4e2c048bfe1d4feea7354a66c7944fd1", param.get("url")));
  45. }
  46. /**
  47. * 阿里发票验真: image
  48. */
  49. @PostMapping("invoice/ocr")
  50. McR invoiceCheckImage(@RequestBody Map<String, String> param) {
  51. log.info("阿里发票验真, 图片, {}", param);
  52. return McR.success(invoice.invoiceCheckOCR("4e2c048bfe1d4feea7354a66c7944fd1", param.get("url")));
  53. }
  54. /**
  55. * 宜搭临时免登地址: 钉钉平台
  56. */
  57. @PostMapping("openUrl")
  58. McR openUrl(@RequestBody Map<String, String> param) {
  59. McException.assertParamException_Null(param, "url");
  60. return McR.success(ydClient_dd.convertTemporaryUrl(param.get("url")));
  61. }
  62. /**
  63. * 宜搭临时免登地址: 宜搭版本
  64. */
  65. @PostMapping("yd/openUrl")
  66. McR openUrl_YD(@RequestBody Map<String, String> param) {
  67. McException.assertParamException_Null(param, "url");
  68. YDParam ydParam = YDParam.builder()
  69. .appType("APP_FKRK7Y94DPI1S9DV1605")
  70. .systemToken("FN7666A1ZD0STZZ75W4CKD1GD07X3PUW2FBRKT")
  71. .fileUrl(param.get("url"))
  72. .build();
  73. return McR.success(ydClient.queryData(YDConf.API_OPEN_URL, ydParam));
  74. }
  75. /**
  76. * 全局查询子表单
  77. */
  78. @PostMapping("queryAll")
  79. McR queryAll(@RequestBody YDParam ydParam) {
  80. return McR.success(ydClient_dd.queryData(ydParam, YDConf.TYPE_QUERY.retrieve_list_all));
  81. }
  82. /**
  83. * 全局查询(不匹配子表单)
  84. */
  85. @PostMapping("validate")
  86. McR queryAll(HttpServletRequest request) {
  87. Map<String, ?> param = UtilServlet.getParamMap(request);
  88. log.info("全局查询(不匹配子表单), {}", param);
  89. if (ObjectUtil.isNull(param.get("uniques"))) {
  90. return McR.success();
  91. }
  92. McException.assertParamException_Null(param, "uniques", "formUuid", "compId");
  93. // 容错 - 尾部分号的空格会被输入框忽略
  94. String[] uniques = String.valueOf(param.get("uniques")).replace("; ", ";").split(";");
  95. for (String val : uniques) {
  96. // 查重校验: 单张发票唯一标识 + 审批已通过 / 审批中
  97. List<Map> conditions = new ArrayList<>();
  98. Map unique = new HashMap();
  99. unique.put("key", param.get("compId"));
  100. unique.put("value", val.split(": ")[1]);
  101. unique.put("type", "TEXT");
  102. unique.put("operator", "like");
  103. unique.put("componentName", "TextField");
  104. conditions.add(unique);
  105. Map approve = new HashMap();
  106. approve.put("key", "processApprovedResult");
  107. approve.put("value", new String[]{"agree"});
  108. approve.put("type", "ARRAY");
  109. approve.put("operator", "in");
  110. approve.put("componentName", "SelectField");
  111. conditions.add(approve);
  112. YDParam ydParam = YDParam.builder()
  113. .appType("APP_FKRK7Y94DPI1S9DV1605")
  114. .systemToken("FN7666A1ZD0STZZ75W4CKD1GD07X3PUW2FBRKT")
  115. .formUuid(String.valueOf(param.get("formUuid")))
  116. .searchCondition(JSON.toJSONString(conditions))
  117. .build();
  118. DDR_New ddr_new = ydClient_dd.queryData(ydParam, YDConf.TYPE_QUERY.retrieve_list);
  119. log.info("审批通过匹配结果, {}, {}", ddr_new.getTotalCount(), ddr_new.getData());
  120. if (ddr_new.getTotalCount() > 0) {
  121. return McR.errorAccess("发票已被使用, 请勿重复提交!");
  122. }
  123. conditions.remove(approve);
  124. Map status = new HashMap();
  125. status.put("key", "processInstanceStatus");
  126. status.put("value", new String[]{"RUNNING"});
  127. status.put("type", "ARRAY");
  128. status.put("operator", "in");
  129. status.put("componentName", "SelectField");
  130. conditions.add(status);
  131. ydParam.setSearchCondition(JSON.toJSONString(conditions));
  132. ddr_new = ydClient_dd.queryData(ydParam, YDConf.TYPE_QUERY.retrieve_list);
  133. log.info("审批通过匹配结果, {}, {}", ddr_new.getTotalCount(), ddr_new.getData());
  134. if (ddr_new.getTotalCount() > 0) {
  135. return McR.errorAccess("发票已在流程中, 请勿重复提交!");
  136. }
  137. }
  138. return McR.success();
  139. }
  140. /**
  141. * 服务状态返回
  142. */
  143. @PostMapping("validateTips")
  144. McR validateTaxNo(HttpServletRequest request) {
  145. Map data = UtilServlet.getParamMap(request);
  146. if (!data.get("status").equals(1)) {
  147. return McR.errorAccess("error");
  148. }
  149. return McR.success(data);
  150. }
  151. }