package com.malk.yibaoju.controller; import com.alibaba.fastjson.JSON; import com.malk.server.aliwork.YDConf; import com.malk.server.aliwork.YDParam; import com.malk.server.common.McException; import com.malk.server.common.McR; import com.malk.service.aliwork.YDClient; import com.malk.service.aliwork.YDService; import com.malk.service.dingtalk.DDService; import com.malk.utils.UtilDateTime; import com.malk.utils.UtilMap; import com.malk.utils.UtilServlet; import com.malk.yibaoju.service.YBJService; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.time.LocalDate; import java.time.format.TextStyle; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; /** * 错误抛出与拦截详见 CatchException */ @Slf4j @RestController @RequestMapping() public class YBJController { @Autowired private YBJService ybjService; @Autowired private YDClient ydClient; /** * 图片免登 */ @PostMapping("temporaryUrl") McR temporaryUrl(@RequestBody Map data) { log.info("图片免登, {}", data); return McR.success(ydClient.convertTemporaryUrl(UtilMap.getString(data, "url"))); } /** * 根据护理安排创建护理计划 * 通过参数 1个护理安排创建多条护理计划 */ @SneakyThrows @PostMapping("createPlan") McR createPlan(HttpServletRequest request){ Map data = UtilServlet.getParamMap(request); log.info("createPlan 护理计划{}",data); LocalDate currentDate = LocalDate.now(); //获取当前日期是本月几号 int dayOfMonth = currentDate.getDayOfMonth(); if ("1".equals(data.get("status"))){ ybjService.creatInfo(data.get("formInstId").toString()); //删除睡眠两秒 在执行创建 if (dayOfMonth>24){ Thread.sleep(2000); ybjService.creatNextInfo(data.get("formInstId").toString()); } }else{ ybjService.updateInfo(data.get("formInstId").toString()); if (dayOfMonth>24){ Thread.sleep(2000); ybjService.creatNextInfo(data.get("formInstId").toString()); } } return McR.success(); } /** * 通过安排创建本月所有的护理计划 * @param request * @return */ @PostMapping("syncCreatePlan") McR syncCreatePlan(HttpServletRequest request) { ybjService.syncNursePlan(); return McR.success(); } /** * 通过安排创建下月所有的护理计划 * @param request * @return */ @PostMapping("syncCreateNextPlan") McR syncCreateNextPlan(HttpServletRequest request) { ybjService.syncCreatePlan(); return McR.success(); } /** * 暂停护理对象 删除所有未执行的护理计划 * 恢复护理对象 新增所有护理任务 如果当前日期是25日 则需要生成下月的数据 * 如果当前日期小于25日 则只生成本月的数据 * @param request * @return */ @SneakyThrows @PostMapping("deletePlan") McR deletePlan(HttpServletRequest request){ Map data = UtilServlet.getParamMap(request); log.info("deletePlan 暂停/恢复护理对象 删除/创建护理计划{}",data); LocalDate currentDate = LocalDate.now(); //获取当前日期是本月几号 int dayOfMonth = currentDate.getDayOfMonth(); if ("1".equals(data.get("code"))){ //获取护理对象CID ybjService.deletePlan(data.get("cId").toString()); }else if ("2".equals(data.get("code"))){ //通过护理对象CID获取护理计划实例ID YDParam ydParam = YDParam.builder() .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2") .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lnyhv5tn",data.get("cId")))) .build(); List dataList = (List) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData(); if(dataList.size()>0){ Map map = (Map) dataList.get(0); ybjService.creatInfo(map.get("formInstanceId").toString()); if (dayOfMonth>24){ Thread.sleep(2000); ybjService.creatNextInfo(map.get("formInstanceId").toString()); } Thread.sleep(2000); ybjService.creatNextInfo(map.get("formInstanceId").toString()); } }else{ //编辑护理对象信息 //先删除 ybjService.deletePlan(data.get("cId").toString()); //删除睡眠两秒 在执行创建 Thread.sleep(2000); //然后重新创建 //通过护理对象CID获取护理计划实例ID YDParam ydParam = YDParam.builder() .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2") .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lnyhv5tn",data.get("cId")))) .build(); List dataList = (List) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData(); if(dataList.size()>0){ Map map = (Map) dataList.get(0); ybjService.creatInfo(map.get("formInstanceId").toString()); if (dayOfMonth>24){ Thread.sleep(2000); ybjService.creatNextInfo(map.get("formInstanceId").toString()); } } } return McR.success(); } @Autowired private YDService ydService; /** * 更新子表关联表单 fixme 1.28 子表单关联表单更新 * * 更新护理安排中的成员组件信息 */ @GetMapping("update") McR update() { List dataList = ydService.queryFormData_all(YDParam.builder() .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2") .build()); for (Map formData: dataList) { List details = (List) formData.get("tableField_lo3pmohx"); for (Map row: details) { row.put("employeeField_lo3pmoi6", "employeeField_lo3pmoi6_id"); row.put("associationFormField_lo3pmohz", YDConf.associationForm("APP_YIDJ71B8QORD2YHNZ26Q", "FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2" ,UtilMap.getString(row,"textField_lrvtfzng"), UtilMap.getString(row, "textField_lrvtfznf"), "", false)); } formData.put("tableField_lo3pmohx", details); try { ydClient.operateData(YDParam.builder() .formInstanceId(UtilMap.getString(formData, "instanceId")) .updateFormDataJson(JSON.toJSONString(formData)) .build(), YDConf.FORM_OPERATION.update); } catch (McException e) { log.info("更新异常, {}",UtilMap.getString(formData, "instanceId") ); } } log.info("更新子表关联表单, {}", dataList.size()); return McR.success(); } /** * 打卡列表传数据到打卡页面无法加载关联控件 * 通过代码将关联控件信息写入到打卡页面 * @param request * @return */ @PostMapping("updatePlanName") McR updatePlanName(HttpServletRequest request) { Map data = UtilServlet.getParamMap(request); log.info("修改打卡数据中的护理计划名称{}",data); Map hashMap = new HashMap(); hashMap.put("associationFormField_lpgi5wv5",YDConf.associationForm("APP_YIDJ71B8QORD2YHNZ26Q","FORM-IY966L71PJ8FV10D61M1HBHU6FB320M2765OLM",data.get("relevanceInstanceId").toString(),data.get("titleName").toString(),"",false)); ydClient.operateData(YDParam.builder() .formInstanceId(data.get("currentInstanceId").toString()) .updateFormDataJson(JSON.toJSONString(hashMap)) .build(), YDConf.FORM_OPERATION.update); return McR.success(); } @Autowired private DDService ddService; /** * 地图 * jsApi 注册 */ @PostMapping("register") McR register(@RequestBody Map data) { McException.assertParamException_Null(data, "url", "nonceStr"); return McR.success(ddService.registerJsApi(data.get("url"), data.get("nonceStr"))); } /** * 同步护理对象坐标地址 * @param request * @return */ @RequestMapping("synPointInfo") McR synPointInfo(HttpServletRequest request) { YDParam ydParam = new YDParam(); ydParam = YDParam.builder() .formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2") //获取护理计划 .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lo2b6bvf","正常")))//护理对象暂停和正常、月度计划创建只查询正常的护理计划 .build(); //pagesize设为1获取总数 ydParam.setPageSize(1); long totalCount = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getTotalCount(); float pageSize = 50; ydParam.setCurrentPage(1); ydParam.setPageSize((int) pageSize); List dataList = new ArrayList<>(); for (int page = 1; page <= Math.ceil(totalCount / pageSize); page++) { ydParam.setCurrentPage(page); //护理计划 1次获取50条 dataList = (List) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData(); log.info("dataList:{}-----page:"+page+"---",dataList.size()); dataList.forEach(dataItem -> { Map formMap = (Map) dataItem.get("formData"); YDParam hldxParam = YDParam.builder() .formUuid("FORM-OS566L91C91FO7LJ8V6AQ9O7CGB53OCVUHYNLH1") //获取护理对象 .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lnyhv5tn",formMap.get("textField_lnyhv5tn")))) .build(); List mapList = (List) ydClient.queryData(hldxParam, YDConf.FORM_QUERY.retrieve_search_form).getData(); Map fkmap = (Map) mapList.get(0).get("formData"); // 更新 ydClient.operateData(YDParam.builder() .formInstanceId((String) dataItem.get("formInstanceId")) .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_lvae99fj, textField_lvae99fk", fkmap.get("textField_ljghmc0e"),fkmap.get("textField_ljghmc0f")))) .build(), YDConf.FORM_OPERATION.update); }); } return McR.success(); } @RequestMapping("test") McR test(HttpServletRequest request) { return McR.success(); } }