YBJController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. package com.malk.yibaoju.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.malk.server.aliwork.YDConf;
  4. import com.malk.server.aliwork.YDParam;
  5. import com.malk.server.common.McException;
  6. import com.malk.server.common.McR;
  7. import com.malk.service.aliwork.YDClient;
  8. import com.malk.service.aliwork.YDService;
  9. import com.malk.service.dingtalk.DDService;
  10. import com.malk.utils.UtilDateTime;
  11. import com.malk.utils.UtilMap;
  12. import com.malk.utils.UtilServlet;
  13. import com.malk.yibaoju.service.YBJService;
  14. import lombok.SneakyThrows;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.*;
  18. import javax.servlet.http.HttpServletRequest;
  19. import java.time.LocalDate;
  20. import java.time.format.TextStyle;
  21. import java.time.temporal.TemporalAdjusters;
  22. import java.util.*;
  23. import java.util.stream.Collectors;
  24. /**
  25. * 错误抛出与拦截详见 CatchException
  26. */
  27. @Slf4j
  28. @RestController
  29. @RequestMapping()
  30. public class YBJController {
  31. @Autowired
  32. private YBJService ybjService;
  33. @Autowired
  34. private YDClient ydClient;
  35. /**
  36. * 图片免登
  37. */
  38. @PostMapping("temporaryUrl")
  39. McR temporaryUrl(@RequestBody Map data) {
  40. log.info("图片免登, {}", data);
  41. return McR.success(ydClient.convertTemporaryUrl(UtilMap.getString(data, "url")));
  42. }
  43. /**
  44. * 根据护理安排创建护理计划
  45. * 通过参数 1个护理安排创建多条护理计划
  46. */
  47. @SneakyThrows
  48. @PostMapping("createPlan")
  49. McR createPlan(HttpServletRequest request){
  50. Map data = UtilServlet.getParamMap(request);
  51. log.info("createPlan 护理计划{}",data);
  52. LocalDate currentDate = LocalDate.now();
  53. //获取当前日期是本月几号
  54. int dayOfMonth = currentDate.getDayOfMonth();
  55. if ("1".equals(data.get("status"))){
  56. ybjService.creatInfo(data.get("formInstId").toString());
  57. //删除睡眠两秒 在执行创建
  58. if (dayOfMonth>24){
  59. Thread.sleep(2000);
  60. ybjService.creatNextInfo(data.get("formInstId").toString());
  61. }
  62. }else{
  63. ybjService.updateInfo(data.get("formInstId").toString());
  64. if (dayOfMonth>24){
  65. Thread.sleep(2000);
  66. ybjService.creatNextInfo(data.get("formInstId").toString());
  67. }
  68. }
  69. return McR.success();
  70. }
  71. /**
  72. * 通过安排创建本月所有的护理计划
  73. * @param request
  74. * @return
  75. */
  76. @PostMapping("syncCreatePlan")
  77. McR syncCreatePlan(HttpServletRequest request) {
  78. ybjService.syncNursePlan();
  79. return McR.success();
  80. }
  81. /**
  82. * 通过安排创建下月所有的护理计划
  83. * @param request
  84. * @return
  85. */
  86. @PostMapping("syncCreateNextPlan")
  87. McR syncCreateNextPlan(HttpServletRequest request) {
  88. ybjService.syncCreatePlan();
  89. return McR.success();
  90. }
  91. /**
  92. * 暂停护理对象 删除所有未执行的护理计划
  93. * 恢复护理对象 新增所有护理任务 如果当前日期是25日 则需要生成下月的数据
  94. * 如果当前日期小于25日 则只生成本月的数据
  95. * @param request
  96. * @return
  97. */
  98. @SneakyThrows
  99. @PostMapping("deletePlan")
  100. McR deletePlan(HttpServletRequest request){
  101. Map data = UtilServlet.getParamMap(request);
  102. log.info("deletePlan 暂停/恢复护理对象 删除/创建护理计划{}",data);
  103. LocalDate currentDate = LocalDate.now();
  104. //获取当前日期是本月几号
  105. int dayOfMonth = currentDate.getDayOfMonth();
  106. if ("1".equals(data.get("code"))){
  107. //获取护理对象CID
  108. ybjService.deletePlan(data.get("cId").toString());
  109. }else if ("2".equals(data.get("code"))){
  110. //通过护理对象CID获取护理计划实例ID
  111. YDParam ydParam = YDParam.builder()
  112. .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2")
  113. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lnyhv5tn",data.get("cId"))))
  114. .build();
  115. List<Map> dataList = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  116. if(dataList.size()>0){
  117. Map map = (Map) dataList.get(0);
  118. ybjService.creatInfo(map.get("formInstanceId").toString());
  119. if (dayOfMonth>24){
  120. Thread.sleep(2000);
  121. ybjService.creatNextInfo(map.get("formInstanceId").toString());
  122. }
  123. Thread.sleep(2000);
  124. ybjService.creatNextInfo(map.get("formInstanceId").toString());
  125. }
  126. }else{ //编辑护理对象信息
  127. //先删除
  128. ybjService.deletePlan(data.get("cId").toString());
  129. //删除睡眠两秒 在执行创建
  130. Thread.sleep(2000);
  131. //然后重新创建
  132. //通过护理对象CID获取护理计划实例ID
  133. YDParam ydParam = YDParam.builder()
  134. .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2")
  135. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lnyhv5tn",data.get("cId"))))
  136. .build();
  137. List<Map> dataList = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  138. if(dataList.size()>0){
  139. Map map = (Map) dataList.get(0);
  140. ybjService.creatInfo(map.get("formInstanceId").toString());
  141. if (dayOfMonth>24){
  142. Thread.sleep(2000);
  143. ybjService.creatNextInfo(map.get("formInstanceId").toString());
  144. }
  145. }
  146. }
  147. return McR.success();
  148. }
  149. @Autowired
  150. private YDService ydService;
  151. /**
  152. * 更新子表关联表单 fixme 1.28 子表单关联表单更新
  153. *
  154. * 更新护理安排中的成员组件信息
  155. */
  156. @GetMapping("update")
  157. McR update() {
  158. List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
  159. .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2")
  160. .build());
  161. for (Map formData: dataList) {
  162. List<Map> details = (List<Map>) formData.get("tableField_lo3pmohx");
  163. for (Map row: details) {
  164. row.put("employeeField_lo3pmoi6", "employeeField_lo3pmoi6_id");
  165. row.put("associationFormField_lo3pmohz", YDConf.associationForm("APP_YIDJ71B8QORD2YHNZ26Q", "FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2" ,UtilMap.getString(row,"textField_lrvtfzng"), UtilMap.getString(row, "textField_lrvtfznf"), "", false));
  166. }
  167. formData.put("tableField_lo3pmohx", details);
  168. try {
  169. ydClient.operateData(YDParam.builder()
  170. .formInstanceId(UtilMap.getString(formData, "instanceId"))
  171. .updateFormDataJson(JSON.toJSONString(formData))
  172. .build(), YDConf.FORM_OPERATION.update);
  173. } catch (McException e) {
  174. log.info("更新异常, {}",UtilMap.getString(formData, "instanceId") );
  175. }
  176. }
  177. log.info("更新子表关联表单, {}", dataList.size());
  178. return McR.success();
  179. }
  180. /**
  181. * 打卡列表传数据到打卡页面无法加载关联控件
  182. * 通过代码将关联控件信息写入到打卡页面
  183. * @param request
  184. * @return
  185. */
  186. @PostMapping("updatePlanName")
  187. McR updatePlanName(HttpServletRequest request) {
  188. Map data = UtilServlet.getParamMap(request);
  189. log.info("修改打卡数据中的护理计划名称{}",data);
  190. Map hashMap = new HashMap();
  191. hashMap.put("associationFormField_lpgi5wv5",YDConf.associationForm("APP_YIDJ71B8QORD2YHNZ26Q","FORM-IY966L71PJ8FV10D61M1HBHU6FB320M2765OLM",data.get("relevanceInstanceId").toString(),data.get("titleName").toString(),"",false));
  192. ydClient.operateData(YDParam.builder()
  193. .formInstanceId(data.get("currentInstanceId").toString())
  194. .updateFormDataJson(JSON.toJSONString(hashMap))
  195. .build(), YDConf.FORM_OPERATION.update);
  196. return McR.success();
  197. }
  198. @Autowired
  199. private DDService ddService;
  200. /**
  201. * 地图
  202. * jsApi 注册
  203. */
  204. @PostMapping("register")
  205. McR register(@RequestBody Map<String, String> data) {
  206. McException.assertParamException_Null(data, "url", "nonceStr");
  207. return McR.success(ddService.registerJsApi(data.get("url"), data.get("nonceStr")));
  208. }
  209. /**
  210. * 同步护理对象坐标地址
  211. * @param request
  212. * @return
  213. */
  214. @RequestMapping("synPointInfo")
  215. McR synPointInfo(HttpServletRequest request) {
  216. YDParam ydParam = new YDParam();
  217. ydParam = YDParam.builder()
  218. .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2") //获取护理计划
  219. .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lo2b6bvf","正常")))//护理对象暂停和正常、月度计划创建只查询正常的护理计划
  220. .build();
  221. //pagesize设为1获取总数
  222. ydParam.setPageSize(1);
  223. long totalCount = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getTotalCount();
  224. float pageSize = 50;
  225. ydParam.setCurrentPage(1);
  226. ydParam.setPageSize((int) pageSize);
  227. List<Map> dataList = new ArrayList<>();
  228. for (int page = 1; page <= Math.ceil(totalCount / pageSize); page++) {
  229. ydParam.setCurrentPage(page);
  230. //护理计划 1次获取50条
  231. dataList = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  232. log.info("dataList:{}-----page:"+page+"---",dataList.size());
  233. dataList.forEach(dataItem -> {
  234. Map formMap = (Map) dataItem.get("formData");
  235. YDParam hldxParam = YDParam.builder()
  236. .formUuid("FORM-OS566L91C91FO7LJ8V6AQ9O7CGB53OCVUHYNLH1") //获取护理对象
  237. .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lnyhv5tn",formMap.get("textField_lnyhv5tn"))))
  238. .build();
  239. List<Map> mapList = (List<Map>) ydClient.queryData(hldxParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  240. Map fkmap = (Map) mapList.get(0).get("formData");
  241. // 更新
  242. ydClient.operateData(YDParam.builder()
  243. .formInstanceId((String) dataItem.get("formInstanceId"))
  244. .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_lvae99fj, textField_lvae99fk", fkmap.get("textField_ljghmc0e"),fkmap.get("textField_ljghmc0f"))))
  245. .build(), YDConf.FORM_OPERATION.update);
  246. });
  247. }
  248. return McR.success();
  249. }
  250. @RequestMapping("test")
  251. McR test(HttpServletRequest request) {
  252. return McR.success();
  253. }
  254. }