|
@@ -0,0 +1,191 @@
|
|
|
|
+package com.qmth.teachcloud.cas.mq.gdpu.api;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.qmth.boot.api.annotation.Aac;
|
|
|
|
+import com.qmth.boot.api.annotation.BOOL;
|
|
|
|
+import com.qmth.boot.api.constant.ApiConstant;
|
|
|
|
+import com.qmth.teachcloud.cas.mq.gdpu.bean.*;
|
|
|
|
+import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
|
|
|
|
+import com.qmth.teachcloud.exchange.common.util.HttpUtil;
|
|
|
|
+import com.qmth.teachcloud.exchange.common.util.Result;
|
|
|
|
+import com.qmth.teachcloud.exchange.common.util.ResultUtil;
|
|
|
|
+import io.swagger.annotations.*;
|
|
|
|
+import org.apache.commons.codec.digest.DigestUtils;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.LinkedHashMap;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+@Api(tags = "广东药科大学获取流程事项controller")
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_GDPU)
|
|
|
|
+@Aac(auth = BOOL.FALSE)
|
|
|
|
+@Validated
|
|
|
|
+public class GdpuMqController {
|
|
|
|
+ private final static Logger log = LoggerFactory.getLogger(GdpuMqController.class);
|
|
|
|
+
|
|
|
|
+ @RequestMapping(value = "/todotask/send", method = RequestMethod.POST)
|
|
|
|
+ @ApiOperation(value = "推送流程信息")
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
|
|
|
|
+ public Result toDoTask(@ApiParam(value = "流程ID(所属应用的ID号+使用业务系统中该流程实例的主键,拼接一起)", required = true) @RequestParam String docunId,
|
|
|
|
+ @ApiParam(value = "所属应用的ID号(由学校管理员提供)", required = true) @RequestParam String sysAppId) throws IOException {
|
|
|
|
+ Map<String, Object> params = new LinkedHashMap<>();
|
|
|
|
+ params.put(SystemConstant.GDPU_DOCUN_ID, sysAppId + docunId);
|
|
|
|
+ params.put(SystemConstant.GDPU_SYS_APP_ID, sysAppId);
|
|
|
|
+ String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
|
|
|
+ String encryptedvalue = DigestUtils.md5Hex(SystemConstant.GDPU_APP_ID + SystemConstant.GDPU_APP_SECRET + dateStr).toUpperCase();
|
|
|
|
+ String result = HttpUtil.postGdpu(SystemConstant.GDPU_MQ_PUSH_URL, params, SystemConstant.GDPU_APP_ID, encryptedvalue, System.currentTimeMillis());
|
|
|
|
+ log.info("result:{}", result);
|
|
|
|
+ return ResultUtil.ok(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @RequestMapping(value = "/getbacklog", method = RequestMethod.POST)
|
|
|
|
+ @ApiOperation(value = "获取流程事项信息")
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
|
|
|
|
+ public JSONObject syncAffairInfo(@ApiParam(value = "appid", required = true) @RequestHeader String appid,
|
|
|
|
+ @ApiParam(value = "签名串", required = true) @RequestHeader String secret,
|
|
|
|
+ @ApiParam(value = "流程id", required = true) @RequestHeader String orunId) {
|
|
|
|
+ //校验secret
|
|
|
|
+ String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
|
|
|
+ String encryptedvalue = DigestUtils.md5Hex(appid + SystemConstant.GDPU_APP_SECRET + dateStr).toUpperCase();
|
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
|
+ JSONObject content = new JSONObject();
|
|
|
|
+ if (!encryptedvalue.equals(secret)) {
|
|
|
|
+ content.put("code", "501");
|
|
|
|
+ content.put("message", "加密串校验失败!");
|
|
|
|
+ result.put("content", content);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ String sysAppId = "znks";
|
|
|
|
+ String flowId = "401331061809741824";
|
|
|
|
+ String docunId = sysAppId + flowId;
|
|
|
|
+ JSONObject data = new JSONObject();
|
|
|
|
+ JSONArray processInfo = new JSONArray(); //主流程信息
|
|
|
|
+ if (orunId != null) {
|
|
|
|
+ ProcessInfoDTO processInfoDTO = new ProcessInfoDTO();
|
|
|
|
+ processInfoDTO.setSysAppId(sysAppId);
|
|
|
|
+ processInfoDTO.setOrunId(docunId);
|
|
|
|
+ // TODO 根据业务系统和场景,传入参数。
|
|
|
|
+ setProcessInfoDTO(processInfoDTO, flowId);
|
|
|
|
+ processInfo.add(processInfoDTO);
|
|
|
|
+ }
|
|
|
|
+ JSONArray todoInfo = new JSONArray(); //待办信息
|
|
|
|
+ if (orunId != null) {
|
|
|
|
+ TodoInfoDTO todoInfoDTO = new TodoInfoDTO();
|
|
|
|
+ todoInfoDTO.setOrunId(orunId);
|
|
|
|
+ // TODO 根据业务系统和场景,传入参数。
|
|
|
|
+ setTodoInfoDTO(todoInfoDTO, flowId);
|
|
|
|
+ todoInfo.add(todoInfoDTO);
|
|
|
|
+ }
|
|
|
|
+// JSONArray toreadInfo = new JSONArray(); //待阅信息
|
|
|
|
+// if (orunId != null) {
|
|
|
|
+// ToReadInfoDTO toReadInfoDTO = new ToReadInfoDTO();
|
|
|
|
+// // TODO 根据业务系统和场景,传入待阅参数,如无数据,则无需传参。
|
|
|
|
+// setToReadInfoDTO(toReadInfoDTO);
|
|
|
|
+// toreadInfo.add(toReadInfoDTO);
|
|
|
|
+// }
|
|
|
|
+// JSONArray remarkInfo = new JSONArray(); //已办信息
|
|
|
|
+// if (orunId != null) {
|
|
|
|
+// RemarkInfoDTO remarkInfoDTO = new RemarkInfoDTO();
|
|
|
|
+// // TODO 根据业务系统和场景,传入触发本次操作的办理信息参数。
|
|
|
|
+// setRemarkInfoDTO(remarkInfoDTO);
|
|
|
|
+// remarkInfo.add(remarkInfoDTO);
|
|
|
|
+// }
|
|
|
|
+ data.put("processInfo", processInfo);
|
|
|
|
+ data.put("todoInfo", todoInfo);
|
|
|
|
+// data.put("toreadInfo", toreadInfo);
|
|
|
|
+// data.put("remarkInfo", remarkInfo);
|
|
|
|
+ content.put("statusCode", 200);
|
|
|
|
+ content.put("success", true);
|
|
|
|
+ content.put("message", "操作成功!");
|
|
|
|
+ content.put("data", data);
|
|
|
|
+ log.info("content:{}", content.toJSONString());
|
|
|
|
+//请求参数body内容加密
|
|
|
|
+ try {
|
|
|
|
+ result.put("content", AESEncryptUtils.aesEncrypt(content.toJSONString(), SystemConstant.GDPU_APP_SECRET.substring(0, 16)));
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("AES加密失败");
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setProcessInfoDTO(ProcessInfoDTO processInfoDTO, String flowId) {
|
|
|
|
+// processInfoDTO.setSysAppId("LYOA");
|
|
|
|
+// processInfoDTO.setOrunId("LYOA79ec0af89702d641d839d5bbb5e9073b0e4b");
|
|
|
|
+ processInfoDTO.setSubject("测试流程");
|
|
|
|
+ processInfoDTO.setCurrentNodeId("T10004");
|
|
|
|
+ processInfoDTO.setCurrentNodeName("拟稿");
|
|
|
|
+ processInfoDTO.setStatus("Current");
|
|
|
|
+ processInfoDTO.setUserId("znkspt"); //申请人ID
|
|
|
|
+ processInfoDTO.setUserName("znkspt"); //申请人名称
|
|
|
|
+ processInfoDTO.setAuthor("znkspt"); //当前审批人的账户ID(多个使用逗号分隔(示例:2007112, admin))
|
|
|
|
+ processInfoDTO.setAuthorCn("znkspt"); //当前审批人的账户名称(多个使用逗号分隔(示例:2007112, admin))
|
|
|
|
+ processInfoDTO.setUrl("https://portal.lysky.com:6205/bpmui/formRender/run?docUnid=" + flowId);
|
|
|
|
+ processInfoDTO.setMobileUrl("https://portal.lysky.com:6205/bpmui/formRender/run?docUnid=" + flowId);
|
|
|
|
+ processInfoDTO.setDocAddTime(new Date());// "2022-07-25 02:36:00"
|
|
|
|
+ processInfoDTO.setDesc("描述");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setTodoInfoDTO(TodoInfoDTO todoInfoDTO, String flowId) {
|
|
|
|
+ todoInfoDTO.setUserId("znkspt");
|
|
|
|
+ todoInfoDTO.setUserName("znkspt");
|
|
|
|
+ todoInfoDTO.setStartTime("2023-06-13 12:15:10");
|
|
|
|
+// todoInfoDTO.setOrunId("a18a585c07b1c04cb00b66e0b76ca9ab1359");
|
|
|
|
+ todoInfoDTO.setNodeId("T10005");
|
|
|
|
+ todoInfoDTO.setNodeName("部门审批");
|
|
|
|
+ todoInfoDTO.setUrl("https://portal.lysky.com:6205/bpmui/#/formRender/run?docUnid=" + flowId);
|
|
|
|
+ todoInfoDTO.setMobileUrl("https://portal.lysky.com:6205/bpmui/#/formRender/run?docUnid=" + flowId);
|
|
|
|
+ todoInfoDTO.setStatus("Current"); //当出现或签、抢占流程时,需要将其他未办理用户设置为Pause状态。
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //以审批通过为例,给出办理记录DTO的数据填充demo
|
|
|
|
+ private void setRemarkInfoDTO(RemarkInfoDTO remarkInfoDTO) {
|
|
|
|
+ remarkInfoDTO.setNodeId("T10006");
|
|
|
|
+ remarkInfoDTO.setNodeName("校领导审批");
|
|
|
|
+ remarkInfoDTO.setStartTime("2022-07-25 18:21:00");
|
|
|
|
+ remarkInfoDTO.setEndTime("2022-07-26 18:21:10");
|
|
|
|
+ remarkInfoDTO.setActionName("同意");
|
|
|
|
+ remarkInfoDTO.setUserId("admin");
|
|
|
|
+ remarkInfoDTO.setUserName("超级管理员");
|
|
|
|
+// remarkInfoDTO.setOrunId("4519915c090cd0452208f610ef5f146920b3");
|
|
|
|
+ remarkInfoDTO.setRemark("同意本流程--审批通过");
|
|
|
|
+ remarkInfoDTO.setUrl("https://portal.lysky.com:6205/bpmui/#/formRender/run?docUnid=79ec0af89702d641d839d5bbb5e9073b0e4b");
|
|
|
|
+ remarkInfoDTO.setMobileUrl("https://portal.lysky.com:6205/bpmui/#/formRender/run?docUnid=79ec0af89702d641d839d5bbb5e9073b0e4b");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setToReadInfoDTO(ToReadInfoDTO toReadInfoDTO) {
|
|
|
|
+ JSONArray toReadUsers = new JSONArray();
|
|
|
|
+//根据场景 -- 插入待阅用户记录
|
|
|
|
+ JSONObject toReadUser1 = new JSONObject();
|
|
|
|
+ toReadUser1.put("toReadUserId", "admin");
|
|
|
|
+ toReadUser1.put("toReadUserName", "超级管理员");
|
|
|
|
+ toReadUser1.put("Status", "Current");
|
|
|
|
+ toReadUser1.put("remark", null);
|
|
|
|
+ toReadUser1.put("startTime", "2022-12-09 17:34:46");
|
|
|
|
+ toReadUsers.add(toReadUser1);
|
|
|
|
+//根据场景 -- 更新已阅用户记录
|
|
|
|
+ JSONObject toReadUser2 = new JSONObject();
|
|
|
|
+ toReadUser2.put("toReadUserId", "admin");
|
|
|
|
+ toReadUser2.put("toReadUserName", "超级管理员");
|
|
|
|
+ toReadUser2.put("Status", "End");
|
|
|
|
+ toReadUser2.put("remark", "已读");
|
|
|
|
+ toReadUser2.put("startTime", "2022-12-09 17:34:46");
|
|
|
|
+ toReadUser2.put("readTime", "2022-12-10 17:34:46");
|
|
|
|
+ toReadUsers.add(toReadUser2);
|
|
|
|
+ toReadInfoDTO.setToReadUser(toReadUsers);
|
|
|
|
+// toReadInfoDTO.setOrunId("a18a585c07b1c04cb00b66e0b76ca9125456");
|
|
|
|
+ toReadInfoDTO.setNodeId("T10005");
|
|
|
|
+ toReadInfoDTO.setUrl("https://portal.lysky.com:6205/bpmui/#/formRender/run?docUnid=79ec0af89702d641d839d5bbb5e9073b0e4b");
|
|
|
|
+ toReadInfoDTO.setMobileUrl("https://portal.lysky.com:6205/bpmui/#/formRender/run?docUnid=79ec0af89702d641d839d5bbb5e9073b0e4b");
|
|
|
|
+ toReadInfoDTO.setNodeName("部门审批");
|
|
|
|
+ }
|
|
|
|
+}
|