diff --git a/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java b/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java index 05349a24..d56ba1f8 100644 --- a/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java +++ b/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java @@ -23,6 +23,7 @@ public enum WorkMsgTypeEnum { SCORE(9, "绩效考评待办事项", "评分", "\n @的绩效\n \n 需您去评分"), SKIP(10, "绩效跳过", "跳过", "# @的绩效\n ## 己经跳过"), TRANSFER(11, "绩效转交", "转交", "# @的绩效\n ## 己经转交"), + CLEARN(10, "绩效转交", "转交", "# @的绩效\n ## 己经转交"), // 您的2020年10月绩效考核已经开始,请尽快制定绩效目标 // 吴林的2020年12月绩效考核的目标需要您确认,点击前往确认 ; diff --git a/src/main/java/com/lz/common/utils/DingTalkUtil.java b/src/main/java/com/lz/common/utils/DingTalkUtil.java index ceffca49..6a4d5187 100644 --- a/src/main/java/com/lz/common/utils/DingTalkUtil.java +++ b/src/main/java/com/lz/common/utils/DingTalkUtil.java @@ -19,6 +19,7 @@ import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.service.SysUserTokenService; import com.lz.modules.third.entity.ThirdAppConfig; import com.lz.modules.third.entity.ThirdMsgSendRecord; +import com.lz.modules.third.entity.WorkMsg; import com.lz.modules.third.service.ThirdAppConfigService; import com.lz.modules.third.service.ThirdMsgSendRecordService; import com.taobao.api.ApiException; @@ -319,20 +320,22 @@ public class DingTalkUtil { return msg; } //发送待办任务 - public String sendSingleWorkMSG(String appid, StaffEntity staff, String title, String title1, - String content1, String title2, - String content2, String title3, - String content3, String singleUrl, String token, String from) { + public String sendSingleWorkMSG(String appid, StaffEntity staff, String title, List msgs, + String singleUrl, String token, String from, + int type, Long workId) { String msg = "OK"; ThirdMsgSendRecord thirdMsgSendRecord = new ThirdMsgSendRecord(); thirdMsgSendRecord.setMsgType("work_msg"); thirdMsgSendRecord.setStaffId(staff.getId()); - thirdMsgSendRecord.setMsgTitle(title1 + "#" + title2 + "#" + title3); + thirdMsgSendRecord.setMsgTitle("待办任务"); thirdMsgSendRecord.setAppId(appid); thirdMsgSendRecord.setHeadText(title); - thirdMsgSendRecord.setMsgContent(content1 + "#" + content2 + "#" + content3); + thirdMsgSendRecord.setMsgContent(JSONObject.toJSONString(msgs)); thirdMsgSendRecord.setMsgUrl(singleUrl); + thirdMsgSendRecord.setWorkType(type); + thirdMsgSendRecord.setEmployeeId(staff.getEmployeeId()); + thirdMsgSendRecord.setWorkId(workId); thirdMsgSendRecord.setStatus(0); try{ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/workrecord/add"); @@ -343,22 +346,16 @@ public class DingTalkUtil { req.setUrl(singleUrl); req.setSourceName(from); List list2 = new ArrayList(); - OapiWorkrecordAddRequest.FormItemVo obj3 = new OapiWorkrecordAddRequest.FormItemVo(); - list2.add(obj3); - obj3.setTitle(title1); - obj3.setContent(content1); - obj3 = new OapiWorkrecordAddRequest.FormItemVo(); - list2.add(obj3); - obj3.setTitle(title2); - obj3.setContent(content2); - obj3 = new OapiWorkrecordAddRequest.FormItemVo(); - list2.add(obj3); - obj3.setTitle(title3); - obj3.setContent(content3); + + for (WorkMsg workMsg:msgs + ) { + OapiWorkrecordAddRequest.FormItemVo obj3 = new OapiWorkrecordAddRequest.FormItemVo(); + list2.add(obj3); + obj3.setTitle(workMsg.getTitle()); + obj3.setContent(workMsg.getContent()); + } req.setFormItemList(list2); OapiWorkrecordAddResponse rsp = client.execute(req, token); - - logger.info("钉钉待办任务请求返回{}", rsp.getBody()); //插入数据库 JSONObject json = JSONObject.parseObject(rsp.getBody()); @@ -383,6 +380,37 @@ public class DingTalkUtil { return msg; } + //发送待办任务 + public String updateWorkMSG(ThirdMsgSendRecord thirdMsgSendRecord, String token) { + String msg = "OK"; + try{ + logger.info("更新待办任务处理{}", thirdMsgSendRecord); + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/workrecord/update"); + OapiWorkrecordUpdateRequest req = new OapiWorkrecordUpdateRequest(); + req.setUserid(thirdMsgSendRecord.getEmployeeId()); + req.setRecordId(thirdMsgSendRecord.getTaskId()); + OapiWorkrecordUpdateResponse rsp = client.execute(req, token); + + logger.info("钉钉更新待办任务请求返回{}", rsp.getBody()); + //插入数据库 + JSONObject json = JSONObject.parseObject(rsp.getBody()); + if(json.getIntValue("errcode") == 0){ + //thirdMsgSendRecord.setTaskId(json.getString("record_id")); + thirdMsgSendRecord.setStatus(8); + thirdMsgSendRecordService.updateThirdMsgSendRecordById(thirdMsgSendRecord); + }else{ + logger.info("更新待办任务失败"); + } + logger.info("发送消息{}", thirdMsgSendRecord); + }catch (ApiException e) { + e.printStackTrace(); + logger.info("更新待办任务异常"); + msg = thirdMsgSendRecord.getRemark(); + + } + return msg; + } + public R getUserIdByCode(String code, String token) { try { DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo"); diff --git a/src/main/java/com/lz/config/ShiroConfig.java b/src/main/java/com/lz/config/ShiroConfig.java index 677f5e88..292daac3 100644 --- a/src/main/java/com/lz/config/ShiroConfig.java +++ b/src/main/java/com/lz/config/ShiroConfig.java @@ -54,7 +54,6 @@ public class ShiroConfig { filterMap.put("/file/**", "anon"); filterMap.put("/test/**", "anon"); filterMap.put("/druid/**", "anon"); - filterMap.put("/user/lzresultrecord/new/resultRecordDetail/**", "anon"); filterMap.put("/app/**", "anon"); filterMap.put("/sys/login", "anon"); filterMap.put("/sys/sendSMS", "anon"); diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java index d4cc6556..01d8012a 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -349,33 +349,37 @@ public class ResultRecordController extends AbstractController { String value = param.get("id").toString(); if(value.length() > 0){ id = Long.parseLong(value); - resultRecord = lzResultRecordService.selectResultRecordById(id); - if(resultRecord == null){ - return R.error("绩效不存在"); - } - //下面判断权限 - if(user.getUserId().longValue() != resultRecord.getStaffId().longValue()){ - //不是自己的绩效,判断是否为绩效管理人员,老板,部门管理人员 - log.info("不是自己的绩效"); - } } - - }else if(param.containsKey("startId")){//根据startId和token获取 String value = param.get("startId").toString(); if(value.length() > 0){ startId = Long.parseLong(value); + } + } + + if(id == null){ + if(startId == null){ + //根据token获取 + resultRecord = lzResultRecordService.selectLastResultRecordByUserId(getUserId()); + if(resultRecord == null){ + return R.error("绩效不存在"); + } + }else{ resultRecord = lzResultRecordService.selectResultRecordByStaffIdAndStartId(getUserId(), startId); if(resultRecord == null){ return R.error("绩效不存在"); } } }else{ - //根据token获取 - resultRecord = lzResultRecordService.selectLastResultRecordByUserId(getUserId()); + resultRecord = lzResultRecordService.selectResultRecordById(id); if(resultRecord == null){ return R.error("绩效不存在"); } + //下面判断权限 + if(user.getUserId().longValue() != resultRecord.getStaffId().longValue()){ + //不是自己的绩效,判断是否为绩效管理人员,老板,部门管理人员 + log.info("不是自己的绩效"); + } } //获取考核维度等信息 diff --git a/src/main/java/com/lz/modules/flow/dao/FlowChangeMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowChangeMapper.java index 9742b918..74299ae7 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowChangeMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowChangeMapper.java @@ -30,4 +30,5 @@ public interface FlowChangeMapper extends BaseMapper { int deleteFlowChangeById(@Param("id")Long id); + FlowChange selectFlowChangeByRecordIdAndToIdAndType(@Param("recordId") Long recordId, @Param("toStaffId") Long toStaffId, @Param("type") int type); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java index 3465842a..0dce7065 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -82,4 +82,9 @@ public interface FlowRecordMapper extends BaseMapper { int batchDeleteByRecordIds(@Param("recordIds")List recordIds); + List selectAndOrFlowRecordsById(@Param("flowRecordId") Long flowRecordId, @Param("recordId") Long recordId); + + List selectLastFlowRecordsById(@Param("recordId") Long recordId); + + List selectLastFlowRecordsByIdAndFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") int flowIndex); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/ResultModelMapper.java b/src/main/java/com/lz/modules/flow/dao/ResultModelMapper.java index ab7d315d..4ca2b4a6 100644 --- a/src/main/java/com/lz/modules/flow/dao/ResultModelMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/ResultModelMapper.java @@ -41,4 +41,6 @@ public interface ResultModelMapper extends BaseMapper { int deleteResultModelByGroupId(Long id); + int updateCoverWeightResultModelById(ResultModel resultModel); + } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowChangeService.java b/src/main/java/com/lz/modules/flow/service/FlowChangeService.java index da1e5fb9..162d21e4 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowChangeService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowChangeService.java @@ -33,4 +33,6 @@ public interface FlowChangeService extends IService { void saveChange(ApprovalDto approvalDto, FlowRecord flowRecord, int i); + + FlowChange selectFlowChangeByRecordIdAndToIdAndType(Long recordId, Long toStaffId, int type); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java index 6f5264ff..36cf8d62 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -76,4 +76,10 @@ public interface FlowRecordService extends IService { FlowRecord selectFlowRecordByRecordIdMinIdStatus(Long resultRecordId, Long id, int i); List selectFlowRecordByRecordIdFlowProcess(Long id, int flowProcess); + //获取同一个节点下面的或签,或者会签 + List selectAndOrFlowRecordsById(Long flowRecordId, Long recordId); + //获取最后流程同一个小节点的所有数据 + List selectLastFlowRecordsById(Long recordId); + //获取制定步骤一个小节点的所有数据 + List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowChangeServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowChangeServiceImpl.java index 73e5bdac..7d043fa8 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowChangeServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowChangeServiceImpl.java @@ -79,5 +79,10 @@ public class FlowChangeServiceImpl extends ServiceImpl selectAndOrFlowRecordsById(Long flowRecordId, Long recordId){ + return flowRecordMapper.selectAndOrFlowRecordsById(flowRecordId, recordId); + } + + @Override + public List selectLastFlowRecordsById(Long recordId){ + return flowRecordMapper.selectLastFlowRecordsById(recordId); + } + + @Override + public List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex){ + return flowRecordMapper.selectLastFlowRecordsByIdAndFlowIndex(recordId, flowIndex); + } } diff --git a/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java index f40b8f43..fd98a97d 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java @@ -129,11 +129,16 @@ public class ResultModelServiceImpl extends ServiceImpl threadSendMessages = new ArrayList<>(); - @Value("${dingtalk.appid}") private String appid; @@ -212,6 +221,17 @@ public class DingtalkBusiness { return sendWorkMSGByEntity(appid, fromStaffEntity, toStaffEntity, workMsgTypeEnum, "https://www.baidu.com"); } + public String delWorkMSGWithStart(List recordIds){ + + logger.info("批量删除待办任务{}", recordIds.size()); + ThreadSendMessage threadSendMessage = new ThreadSendMessage(); + threadSendMessage.setUpdateData(recordIds, WorkMsgTypeEnum.CLEARN, appid); + Thread thread = new Thread(threadSendMessage); + thread.start(); + + return "OK"; + } + //流程流转发送消息 public String sendWorkMSGWithAsyn(Long resultRecordId , int type) { @@ -221,13 +241,14 @@ public class DingtalkBusiness { StaffSimpleInfo fromStaff = staffService.selectStaffSimpleInfo(resultRecord.getStaffId()); fromStaff.setResultRecord(resultRecord); fromStaff.setFlowStart(flowStart); - List toStaffids; + List toStaffids = new ArrayList<>(); + toStaffids.add(fromStaff); + sendWorkMSGWithAsyn(null, toStaffids, WorkMsgTypeEnum.PROCESS.getType()); if(type == WorkMsgTypeEnum.REJECT.getType()){//被拒 - toStaffids = new ArrayList<>(); - toStaffids.add(fromStaff); - sendWorkMSGWithAsyn(fromStaff, toStaffids, WorkMsgTypeEnum.REJECT.getType()); + + sendWorkMSGWithAsyn(null, toStaffids, WorkMsgTypeEnum.REJECT.getType()); }else{ - List flowRecords = + /*List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(resultRecordId, 2); List ids = flowRecords.stream().map(new Function() { @Override @@ -240,8 +261,8 @@ public class DingtalkBusiness { ) { simpleInfo.setResultRecord(resultRecord); simpleInfo.setFlowStart(flowStart); - } - sendWorkMSGWithAsyn(fromStaff, toStaffids, WorkMsgTypeEnum.PROCESS.getType()); + }*/ + sendWorkMSGWithAsyn(null, toStaffids, WorkMsgTypeEnum.PROCESS.getType()); } @@ -251,7 +272,7 @@ public class DingtalkBusiness { } - public String sendWorkMSGWithAsyn(StaffSimpleInfo fromStaff, List toStaffids, int type) { + public String sendWorkMSGWithAsyn(StaffSimpleInfo fromStaff, List toStaffids, int type) { if(toStaffids.size() > 0){ if (toStaffids.get(0).getEmployeeId() == null || toStaffids.get(0).getEmployeeId().length() == 0) { //查询第三方id @@ -271,8 +292,7 @@ public class DingtalkBusiness { } WorkMsgTypeEnum workMsgTypeEnum = WorkMsgTypeEnum.findRoleTypeByCode(type); - ThreadSendMessage threadSendMessage = new ThreadSendMessage(fromStaff, toStaffids, workMsgTypeEnum, appid); - threadSendMessages.add(threadSendMessage);//防止提前回收 + ThreadSendMessage threadSendMessage = new ThreadSendMessage(toStaffids, workMsgTypeEnum, appid); Thread thread = new Thread(threadSendMessage); thread.start(); @@ -354,93 +374,222 @@ public class DingtalkBusiness { public class ThreadSendMessage implements Runnable{ List toStaffids; - StaffSimpleInfo fromStaff = null; + //StaffSimpleInfo fromStaff = null; + List recordIds; WorkMsgTypeEnum workMsgTypeEnum; String appid; String hostUrl = "https://lzmanagement.ldxinyong.com/digitization"; - public ThreadSendMessage(StaffSimpleInfo fromStaff, List toStaffids, WorkMsgTypeEnum typeEnum, String appid){ + public ThreadSendMessage(List toStaffids, WorkMsgTypeEnum typeEnum, String appid){ this.toStaffids = toStaffids; workMsgTypeEnum = typeEnum; - this.fromStaff = fromStaff; this.appid = appid; } + + + public void setUpdateData(List recordIds, WorkMsgTypeEnum typeEnum, String appid){ + this.recordIds = recordIds; + workMsgTypeEnum = typeEnum; + this.appid = appid; + } + public ThreadSendMessage(){ + + } + + + + private void sendNotic(Long staffId, String employeeId, + String content1, String content2, String content3, + String token, String url, Long recordId){ + StaffEntity entity = new StaffEntity(); + entity.setId(staffId); + entity.setEmployeeId(employeeId); + List msgs = new ArrayList<>(); + WorkMsg workMsg = new WorkMsg("任务内容", content1); + msgs.add(workMsg); + workMsg = new WorkMsg("考核名称", content2); + msgs.add(workMsg); + workMsg = new WorkMsg("被考核人", content3); + msgs.add(workMsg); + dingTalkUtil.sendSingleWorkMSG(appid, entity, workMsgTypeEnum.getTitle(), + msgs, + url, token, "霖梓控股", 1, recordId); + } + @Override public void run() { - logger.info("开始批量推送消息,数量{}, appid{}", toStaffids.size(), appid); + ThirdAppConfig thirdAppConfig = thirdAppConfigService.getByAppId(appid); String token = dingTalkUtil.getAccessTokenWitchEntity(thirdAppConfig); - for (StaffSimpleInfo info:toStaffids - ) { - if(token != null && token.length() > 0){ - //下面防止第二次发送消息时钉钉不推送 - String url = hostUrl; - if(url.contains("?")){ - url += "&halokit=" + System.currentTimeMillis(); - }else{ - url += "?halokit=" + System.currentTimeMillis(); - } - url += ("&detail=1&id=" + info.getResultRecord().getId()); - url = URLEncoder.encode(url); + if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.CLEARN.getType()){ + //绩效催办 + logger.info("绩效清空"); - url = "dingtalk://dingtalkclient/action/openapp?corpid=" + thirdAppConfig.getCorpId() + - "&container_type=work_platform&app_id=0_" + - appid + "&redirect_type=jump&redirect_url=" + url; - if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.START_WORK.getType()){ - //发送制定目标通知 - StaffEntity entity = new StaffEntity(); - entity.setId(info.getId()); - entity.setEmployeeId(info.getEmployeeId()); - dingTalkUtil.sendSingleWorkMSG(appid, entity, workMsgTypeEnum.getTitle(), - "任务内容", "目标制定", - "考核名称", info.getFlowStart().getName(), - "被考核人", info.getResultRecord().getStaffName(), - url, token, "霖梓控股"); - }else if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.START_SCORE.getType()){ - //发送开始评分通知 - StaffEntity entity = new StaffEntity(); - entity.setId(info.getId()); - entity.setEmployeeId(info.getEmployeeId()); - dingTalkUtil.sendSingleWorkMSG(appid, entity, workMsgTypeEnum.getTitle(), - "任务内容", "结果录入", - "考核名称", info.getFlowStart().getName(), - "被考核人", info.getResultRecord().getStaffName(), - url, token, "霖梓控股"); - }else{ - //流程流转通知 - List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(info.getResultRecord().getId(), 2); - if(flowRecords.size() == 0){ - //任务结束 + List threadSendMessages + = thirdMsgSendRecordService.selectThirdMsgSendRecordsByRecordIds(recordIds, 1, 1); + logger.info("需要删除的条数为{}", threadSendMessages.size()); + for (ThirdMsgSendRecord thirdMsgSendRecord:threadSendMessages + ) { + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + } + }else{ + logger.info("开始批量推送消息,数量{}, appid{}", toStaffids.size(), appid); + for (StaffSimpleInfo info:toStaffids + ) { + if(token != null && token.length() > 0){ + //下面防止第二次发送消息时钉钉不推送 + String url = hostUrl; + if(url.contains("?")){ + url += "&halokit=" + System.currentTimeMillis(); }else{ - List ids = flowRecords.stream().map(new Function() { - @Override - public Long apply(FlowRecord flowRecord) { - return flowRecord.getApprovalStaffId(); - } - }).collect(Collectors.toList()); - List staffSimpleInfos = staffService.selectStaffSimpleInfos(ids); - for (StaffSimpleInfo staffSimpleInfo:staffSimpleInfos - ) { - StaffEntity entity = new StaffEntity(); - entity.setId(staffSimpleInfo.getId()); - entity.setEmployeeId(staffSimpleInfo.getEmployeeId()); - dingTalkUtil.sendSingleWorkMSG(appid, entity, workMsgTypeEnum.getTitle(), - "任务内容", flowRecords.get(0).getFlowName(), - "考核名称", info.getFlowStart().getName(), - "被考核人", info.getResultRecord().getStaffName(), - url, token, "霖梓控股"); - } - + url += "?halokit=" + System.currentTimeMillis(); } - } + url += ("&detail=1&id=" + info.getResultRecord().getId()); + url = URLEncoder.encode(url); - - }else{ - logger.info("ThreadSendMessage token无效"); ; + + url = "dingtalk://dingtalkclient/action/openapp?corpid=" + thirdAppConfig.getCorpId() + + "&container_type=work_platform&app_id=0_" + + appid + "&redirect_type=jump&redirect_url=" + url; + + if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.START_WORK.getType()){ + //发送制定目标通知 + logger.info("目标制定"); + sendNotic(info.getId(), info.getEmployeeId(), + "目标制定", info.getFlowStart().getName(), + info.getResultRecord().getStaffName(), token, url, info.getResultRecord().getId()); + + }else if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.START_SCORE.getType()){ + //发送开始评分通知 + logger.info("结果录入"); + sendNotic(info.getId(), info.getEmployeeId(), + "结果录入", info.getFlowStart().getName(), + info.getResultRecord().getStaffName(), token, url, info.getResultRecord().getId()); + + }else if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.URGING.getType()){ + //绩效催办 + logger.info("绩效催办"); + }else { + //流程流转通知 + + if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.TRANSFER.getType()){//转交 + //转交 + logger.info("转交待办任务处理"); + FlowChange flowChange = flowChangeService.selectFlowChangeByRecordIdAndToIdAndType(info.getResultRecord().getId(), + info.getId(), 0); + ThirdMsgSendRecord thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + info.getResultRecord().getId(), flowChange.getApprovalId(), 1, 1); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + } + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(info.getResultRecord().getId(), 2); + //发送待办任务到新指定人员,转交过来一定会有数据 + sendNotic(info.getId(), info.getEmployeeId(), + flowRecords.get(0).getFlowName(), info.getFlowStart().getName(), + info.getResultRecord().getStaffName(), token, url, info.getResultRecord().getId()); + + + + }else if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.SKIP.getType()){//跳过 + //跳过 + logger.info("跳过待办任务处理"); + FlowChange flowChange = flowChangeService.selectFlowChangeByRecordIdAndToIdAndType(info.getResultRecord().getId(), + info.getId(), 1); + ThirdMsgSendRecord thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + info.getResultRecord().getId(), + flowChange.getApprovalId(), 1, 1); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + } + List flowRecords = flowRecordService.selectAndOrFlowRecordsById(flowChange.getFlowRecordId(), info.getResultRecord().getId()); + logger.info("查询到可能需要更新待办任务数量{}", flowRecords.size()); + if(flowRecords.size() > 0){ + if(flowRecords.get(0).getType().intValue() == 1){ + //或签 + logger.info("或签,需要更新该节点下所有人员的待办任务"); + for (FlowRecord flowRecord:flowRecords + ) { + if(flowRecord.getApprovalStaffId().longValue() != info.getId()){ + logger.info("更新非直接跳关人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), + flowRecord.getApprovalStaffName()); + thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + info.getResultRecord().getId(), + flowRecord.getApprovalStaffId(), 1, 1); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + } + } + } + } + } + }else{ + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(info.getResultRecord().getId(), 2); + if(flowRecords.size() > 0){//给下一步骤需要处理的人发送待办任务 + if(flowRecords.get(0).getFlowProcess().intValue() != 2){//执行中的不发送待办 + logger.info("非执行中的节点发送待办任务{}", flowRecords.get(0).getFlowName()); + List ids = flowRecords.stream().map(new Function() { + @Override + public Long apply(FlowRecord flowRecord) { + return flowRecord.getApprovalStaffId(); + } + }).collect(Collectors.toList()); + List staffSimpleInfos = staffService.selectStaffSimpleInfos(ids); + for (StaffSimpleInfo staffSimpleInfo:staffSimpleInfos + ) { + sendNotic(staffSimpleInfo.getId(), staffSimpleInfo.getEmployeeId(), + flowRecords.get(0).getFlowName(), info.getFlowStart().getName(), + info.getResultRecord().getStaffName(), token, url, info.getResultRecord().getId()); + + } + } + } + //取消上一步骤发送的待办任务 + if(flowRecords.size() == 0){//任务结束了 + flowRecords = flowRecordService.selectLastFlowRecordsById(info.getResultRecord().getId()); + }else{ + if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){//被拒 + flowRecords = flowRecordService.selectLastFlowRecordsByIdAndFlowIndex(info.getResultRecord().getId() + , flowRecords.get(0).getFlowIndex().intValue() + 1);//获取下一步的数据 + }else{ + flowRecords = flowRecordService.selectLastFlowRecordsByIdAndFlowIndex(info.getResultRecord().getId() + , flowRecords.get(0).getFlowIndex().intValue() - 1);//获取上一步的数据 + } + + } + logger.info("查询到可能需要更新的待办任务数量{}", flowRecords.size()); + if(flowRecords.size() > 0){ + for (FlowRecord flowRecord:flowRecords + ) { + if(flowRecord.getStatus().intValue() == 1 + || flowRecord.getStatus().intValue() == 3 + || flowRecord.getStatus().intValue() == 4 + || workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){ + logger.info("将要更新人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), + flowRecord.getApprovalStaffName()); + ThirdMsgSendRecord thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + info.getResultRecord().getId(), + flowRecord.getApprovalStaffId(), 1, 1); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + }else{ + logger.info("无需更新待办任务"); + } + } + } + } + } + } + }else{ + logger.info("ThreadSendMessage token无效"); ; + } } } - threadSendMessages.remove(this); + } } } diff --git a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java index 7580c83a..9ff5ef53 100644 --- a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java +++ b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java @@ -16,6 +16,7 @@ import com.lz.modules.performance.req.CheckStaffReq; import com.lz.modules.sys.controller.AbstractController; import com.lz.modules.sys.entity.SysUserEntity; import io.swagger.annotations.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -27,6 +28,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("/evaluationGroup") @Api(tags="考评组") +@Slf4j public class EvaluationGroupController extends AbstractController { @@ -116,6 +118,7 @@ public class EvaluationGroupController extends AbstractController { @ApiOperation("获取考评组列表") @ApiResponses({@ApiResponse(code=200,message = "成功", response=EvaluationGroup.class)}) public R getGroups(@RequestBody @ApiParam EvaluationGroupReq req) { + log.info("获取考评组列表数据{}", req); SysUserEntity sysUserEntity = getUser(); PageUtils pageUtils = evaluationGroupService.selectEvaluationGroupByReq(req, sysUserEntity); return R.ok().put("data",pageUtils); @@ -134,6 +137,7 @@ public class EvaluationGroupController extends AbstractController { @ApiOperation("保存考评组") @ApiResponses({@ApiResponse(code = 200, message = "成功", response = EvaluationGroup.class)}) public R save(@RequestBody @ApiParam EvaluationGroup evaluationGroup) { + log.info("保存考评组数据{}", evaluationGroup); EvaluationGroup evaluationGroup1 = evaluationGroupService.selectEvaluationGroupByName(evaluationGroup.getName()); List staffRoles = null; if(evaluationGroup.getId() != null && evaluationGroup.getId().intValue() > 0){ @@ -228,6 +232,7 @@ public class EvaluationGroupController extends AbstractController { @ApiOperation("校验是否有跨组人员") @ApiResponses({@ApiResponse(code = 200,message = "成功"),@ApiResponse(code = 504,message = "已跨组",response = StaffSimpleDto.class)}) public R checkStaff(@RequestBody @ApiParam(required = true,name = "body") CheckStaffReq checkStaffReq) { + log.info("校验跨组人员接受数据{}", checkStaffReq); return evaluationGroupService.checkStaff(checkStaffReq); } } diff --git a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java index 063e2980..64d7c8b3 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java @@ -17,6 +17,7 @@ import com.lz.modules.flow.service.FlowChartRoleService; import com.lz.modules.flow.service.FlowChartService; import com.lz.modules.flow.service.FlowManagerService; import io.swagger.annotations.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -30,6 +31,7 @@ import java.util.stream.Stream; @RestController @RequestMapping("/flowChart") @Api(tags={"考核节点"}) +@Slf4j public class FlowChartController { @@ -142,6 +144,7 @@ public class FlowChartController { @ApiOperation("保存流程节点小流程列表") @ApiResponses({@ApiResponse(code = 200, message = "成功", response = FlowChartDetailRecord.class)}) public R saveDetailProcs(@RequestBody @ApiParam FlowChartDetailRecordListReq flowChartDetailRecordListReq) { + log.info("保存流程小结点接受的数据{}", flowChartDetailRecordListReq); if(flowChartDetailRecordListReq.getRecordSimpleDtos() != null && flowChartDetailRecordListReq.getRecordSimpleDtos().size() > 0){ List inserts = new ArrayList<>(); List updaes = new ArrayList<>(); diff --git a/src/main/java/com/lz/modules/performance/controller/FlowStartController.java b/src/main/java/com/lz/modules/performance/controller/FlowStartController.java index 96939660..bb7a0fc0 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowStartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowStartController.java @@ -23,6 +23,7 @@ import com.lz.modules.sys.entity.app.ResultRecord; import com.lz.modules.sys.service.app.ResultDetailService; import com.lz.modules.sys.service.app.ResultRecordService; import io.swagger.annotations.*; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.map.HashedMap; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -37,6 +38,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("/flowStart") @Api(tags = "发起考核") +@Slf4j public class FlowStartController { @@ -69,6 +71,7 @@ public class FlowStartController { @ApiOperation("发起新的考核任务") @ApiResponses({@ApiResponse(code = 200, message = "成功", response = FlowStart.class)}) public R save(@RequestBody @ApiParam FlowStart flowStart) { + log.info("发起考核接受数据{}", flowStart); return flowStartService.saveStart(flowStart); } diff --git a/src/main/java/com/lz/modules/performance/controller/ResultModelController.java b/src/main/java/com/lz/modules/performance/controller/ResultModelController.java index 420a77d4..83021543 100644 --- a/src/main/java/com/lz/modules/performance/controller/ResultModelController.java +++ b/src/main/java/com/lz/modules/performance/controller/ResultModelController.java @@ -12,6 +12,7 @@ import com.lz.modules.flow.req.ResultTagetLibItemReq; import com.lz.modules.flow.service.ResultModelService; import com.lz.modules.performance.service.ResultTagetLibService; import io.swagger.annotations.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -24,6 +25,7 @@ import java.util.List; @RestController @RequestMapping("/resultModel") @Api(tags = "考核模板相关") +@Slf4j public class ResultModelController { @@ -86,6 +88,7 @@ public class ResultModelController { @PostMapping("/save") @ApiOperation("保存模板中的考核维度") public R save(@RequestBody @ApiParam ResultModel resultModel) { + log.info("保存模板中的考核数据{}", resultModel); if(resultModel.getId() != null && resultModel.getId().intValue() > 0){ return update(resultModel); } @@ -96,6 +99,7 @@ public class ResultModelController { @PostMapping("/saveDetail") @ApiOperation("保存模板中的考核维度及指标") public R saveDetail(@RequestBody @ApiParam ResultModelDetailReq resultModelDetailReq) { + log.info("保存指标的数据{}", resultModelDetailReq); return resultModelService.saveDetail(resultModelDetailReq); } diff --git a/src/main/java/com/lz/modules/performance/controller/ResultTagetLibController.java b/src/main/java/com/lz/modules/performance/controller/ResultTagetLibController.java index 67b06801..56529384 100644 --- a/src/main/java/com/lz/modules/performance/controller/ResultTagetLibController.java +++ b/src/main/java/com/lz/modules/performance/controller/ResultTagetLibController.java @@ -8,12 +8,14 @@ import com.lz.modules.flow.model.ResultTagetLibDto; import com.lz.modules.flow.req.ResultTagetLibSearchReq; import com.lz.modules.performance.service.ResultTagetLibService; import io.swagger.annotations.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/resultTagetLib") @Api(tags = "考核指标相关") +@Slf4j public class ResultTagetLibController { @@ -28,6 +30,7 @@ public class ResultTagetLibController { @ApiOperation("搜索指标库") @ApiResponses({@ApiResponse(code = 200,message = "成功",response = ResultTagetLibDto.class)}) public R GetTargetLibs(@RequestBody @ApiParam ResultTagetLibSearchReq req) { + log.info("搜索指标请求的数据{}", req); PageUtils pageUtils = resultTagetLibService.selectResultTagetLibByReq(req); return R.ok().put("data",pageUtils); } @@ -50,7 +53,7 @@ public class ResultTagetLibController { @PostMapping("/save") @ApiOperation("保存考核指标") public R save(@RequestBody @ApiParam ResultTagetLib resultTagetLib) { - + log.info("保存考核指标{}", resultTagetLib); if(resultTagetLib.getId() != null && resultTagetLib.getId().intValue() > 0){ return update(resultTagetLib); } diff --git a/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java b/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java index 6662f31f..3ffdb11a 100644 --- a/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java +++ b/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java @@ -169,6 +169,13 @@ public class AssessManagerServiceImpl implements AssessManagerService { resultRecordMapper.batchDeleteByResultRecordIds(ids); //删除flowRecord flowRecordMapper.batchDeleteByRecordIds(ids); + //删除钉钉任务 + try { + String s = dingtalkBusiness.delWorkMSGWithStart(ids); + log.info("清除钉钉任务响应,res: " +s); + } catch (Exception e) { + log.error("调用钉钉清除任务异常,e:" ,e); + } } return ; @@ -264,6 +271,14 @@ public class AssessManagerServiceImpl implements AssessManagerService { //删除本次考核任务 resultRecordMapper.batchDeleteByStartIdAndStaffId(req.getStartId(),change); evaluationStartStaffMapper.deleteEvaluationStartStaffChangeAssess(req.getStartId(),change); + //删除钉钉任务 + try { + List recordIds = resultRecordMapper.selectIdsByStartId(req.getStartId()); + String s = dingtalkBusiness.delWorkMSGWithStart(recordIds); + log.info("清除钉钉任务响应,res: " +s); + } catch (Exception e) { + log.error("调用钉钉清除任务异常,e:" ,e); + } return R.ok(); } return R.ok(); diff --git a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java index 7955fc78..6607f392 100644 --- a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java +++ b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java @@ -106,4 +106,6 @@ public interface ResultRecordMapper extends BaseMapper { int batchDeleteByResultRecordIds(@Param("resultRecordIds")List resultRecordIds); + List selectResultRecordsByStartId(Long startId); + } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java index 2e1878d5..7e79b30e 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java @@ -122,4 +122,7 @@ public interface ResultRecordService extends IService { ResultRecord selectLastResultRecordByUserId(Long userId); ResultRecord selectResultRecordByStaffIdAndStartId(Long userId, Long startId); + + List selectResultRecordsByStartId(Long startId); + List selectResultRecordIdsByStartId(Long startId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index 93ce0172..b46fe8df 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -1334,4 +1334,14 @@ public class ResultRecordServiceImpl extends ServiceImpl selectResultRecordsByStartId(Long startId){ + return resultRecordMapper.selectResultRecordsByStartId(startId); + } + + @Override + public List selectResultRecordIdsByStartId(Long startId){ + return resultRecordMapper.selectIdsByStartId(startId); + } } diff --git a/src/main/java/com/lz/modules/third/dao/ThirdMsgSendRecordMapper.java b/src/main/java/com/lz/modules/third/dao/ThirdMsgSendRecordMapper.java index 952f9727..036a4576 100644 --- a/src/main/java/com/lz/modules/third/dao/ThirdMsgSendRecordMapper.java +++ b/src/main/java/com/lz/modules/third/dao/ThirdMsgSendRecordMapper.java @@ -11,6 +11,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.modules.third.entity.ThirdMsgSendRecord; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; + @Mapper public interface ThirdMsgSendRecordMapper extends BaseMapper { @@ -30,4 +33,13 @@ public interface ThirdMsgSendRecordMapper extends BaseMapper int deleteThirdMsgSendRecordById(@Param("id")Long id); + ThirdMsgSendRecord selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + @Param("workId") Long workId, + @Param("staffId") Long staffId, + @Param("workType") int workType, + @Param("status") int status); + + List selectThirdMsgSendRecordsByRecordIds(@Param("list") List recordIds, + @Param("type") int type, + @Param("status") int status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/third/entity/ThirdMsgSendRecord.java b/src/main/java/com/lz/modules/third/entity/ThirdMsgSendRecord.java index 7570413d..82972998 100644 --- a/src/main/java/com/lz/modules/third/entity/ThirdMsgSendRecord.java +++ b/src/main/java/com/lz/modules/third/entity/ThirdMsgSendRecord.java @@ -1,73 +1,109 @@ package com.lz.modules.third.entity; -import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** *

-* 菜单权限表 *

*第三方消息发送记录 * @author quyixiao -* @since 2020-08-19 +* @since 2020-11-19 */ @Data @TableName("third_msg_send_record") +@ApiModel(value = "第三方消息发送记录") public class ThirdMsgSendRecord implements java.io.Serializable { // @TableId(value = "id", type = IdType.AUTO) private Long id; // + @ApiModelProperty(value = "", name = "isDelete") private Integer isDelete; // - private Date createTime; + @ApiModelProperty(value = "", name = "gmtCreate") + private Date gmtCreate; // - private Date updateTime; - //消息类型:text,image,voice,file,link,oa,markdown,action_card + @ApiModelProperty(value = "", name = "gmtModified") + private Date gmtModified; + //消息类型:text,image,voice,file,link,oa,markdown,action_card,work_msg待办任务 + @ApiModelProperty(value = "消息类型:text,image,voice,file,link,oa,markdown,action_card,work_msg待办任务", name = "msgType") private String msgType; //消息头背景色 oa消息中才有 + @ApiModelProperty(value = "消息头背景色 oa消息中才有", name = "headBgcolor") private String headBgcolor; //消息头部标题,最多10个字符 oa消息中,action_card的title + @ApiModelProperty(value = "消息头部标题,最多10个字符 oa消息中,action_card的title", name = "headText") private String headText; //消息标题,oa中的消息体的消息头,link,markdown,action_card的single_title + @ApiModelProperty(value = "消息标题,oa中的消息体的消息头,link,markdown,action_card的single_title", name = "msgTitle") private String msgTitle; //消息内容,text,link,oa正文,markdown的markdown内容,action_card的markdown内容 + @ApiModelProperty(value = "消息内容,text,link,oa正文,markdown的markdown内容,action_card的markdown内容", name = "msgContent") private String msgContent; //image,voice,file消息的文件附件id + @ApiModelProperty(value = "image,voice,file消息的文件附件id", name = "mediaId") private Long mediaId; //voice消息的时常信息 不超过60秒 + @ApiModelProperty(value = "voice消息的时常信息 不超过60秒", name = "duration") private String duration; //link、oa的message_url,action_card的single_url + @ApiModelProperty(value = "link、oa的message_url,action_card的single_url", name = "msgUrl") private String msgUrl; //link,oa中的图片,如果使用钉钉中的资源ID,请用@资源id的形式 + @ApiModelProperty(value = "link,oa中的图片,如果使用钉钉中的资源ID,请用@资源id的形式", name = "picUrl") private String picUrl; //oa的pc端url + @ApiModelProperty(value = "oa的pc端url", name = "pcUrl") private String pcUrl; //oa中的消息体,json,Array串[{"key":"说明A","value":"值A"},{"key":"说明B","value":"值B"}],最多显示6个 + @ApiModelProperty(value = "oa中的消息体,json,Array串[{\"key\":\"说明A\",\"value\":\"值A\"},{\"key\":\"说明B\",\"value\":\"值B\"}],最多显示6个", name = "form") private String form; //oa中的单文本信息的数目 + @ApiModelProperty(value = "oa中的单文本信息的数目", name = "richNum") private String richNum; //oa中的单文本信息的单位 + @ApiModelProperty(value = "oa中的单文本信息的单位", name = "richUnit") private String richUnit; //oa中显示的附件数目,不做校验只展示 + @ApiModelProperty(value = "oa中显示的附件数目,不做校验只展示", name = "fileCount") private String fileCount; //oa中的自定义作者 + @ApiModelProperty(value = "oa中的自定义作者", name = "author") private String author; //action_card独立跳转是按钮的排列0是竖向排列 1是横向排列 + @ApiModelProperty(value = "action_card独立跳转是按钮的排列0是竖向排列 1是横向排列", name = "actionCardBtnOrientation") private String actionCardBtnOrientation; //action_card独立跳转的jsonarray [{"tilte":"A按钮","action_url":"A按钮链接"},{"tilte":"B按钮","action_url":"B按钮链接"}] + @ApiModelProperty(value = "action_card独立跳转的jsonarray [{\"tilte\":\"A按钮\",\"action_url\":\"A按钮链接\"},{\"tilte\":\"B按钮\",\"action_url\":\"B按钮链接\"}]", name = "actionCardBtnList") private String actionCardBtnList; //lz_staff id + @ApiModelProperty(value = "lz_staff id", name = "staffId") private Long staffId; //发送状态:0新建,1已发送,2处理中,3已送达,4未读,5已读,6发送失败,7撤回 + @ApiModelProperty(value = "发送状态:0新建,1已发送,2处理中,3已送达,4未读,5已读,6发送失败,7撤回", name = "status") private Integer status; //应用ID + @ApiModelProperty(value = "应用ID", name = "appId") private String appId; //钉钉返回的任务id + @ApiModelProperty(value = "钉钉返回的任务id", name = "taskId") private String taskId; //备注,一些说明 + @ApiModelProperty(value = "备注,一些说明", name = "remark") private String remark; + //消息,任务对应的工作ID + @ApiModelProperty(value = "消息,任务对应的工作ID", name = "workId") + private Long workId; + //1表示绩效待办... + @ApiModelProperty(value = "1表示绩效待办...", name = "workType") + private Integer workType; + //第三方用户所在组织id + @ApiModelProperty(value = "第三方用户所在组织id", name = "employeeId") + private String employeeId; /** * * @return @@ -102,41 +138,41 @@ public class ThirdMsgSendRecord implements java.io.Serializable { * * @return */ - public Date getCreateTime() { - return createTime; + public Date getGmtCreate() { + return gmtCreate; } /** * - * @param createTime + * @param gmtCreate */ - public void setCreateTime(Date createTime) { - this.createTime = createTime; + public void setGmtCreate(Date gmtCreate) { + this.gmtCreate = gmtCreate; } /** * * @return */ - public Date getUpdateTime() { - return updateTime; + public Date getGmtModified() { + return gmtModified; } /** * - * @param updateTime + * @param gmtModified */ - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + public void setGmtModified(Date gmtModified) { + this.gmtModified = gmtModified; } /** - * 消息类型:text,image,voice,file,link,oa,markdown,action_card + * 消息类型:text,image,voice,file,link,oa,markdown,action_card,work_msg待办任务 * @return */ public String getMsgType() { return msgType; } /** - * 消息类型:text,image,voice,file,link,oa,markdown,action_card + * 消息类型:text,image,voice,file,link,oa,markdown,action_card,work_msg待办任务 * @param msgType */ public void setMsgType(String msgType) { @@ -458,13 +494,58 @@ public class ThirdMsgSendRecord implements java.io.Serializable { this.remark = remark; } + /** + * 消息,任务对应的工作ID + * @return + */ + public Long getWorkId() { + return workId; + } + /** + * 消息,任务对应的工作ID + * @param workId + */ + public void setWorkId(Long workId) { + this.workId = workId; + } + + /** + * 1表示绩效待办... + * @return + */ + public Integer getWorkType() { + return workType; + } + /** + * 1表示绩效待办... + * @param workType + */ + public void setWorkType(Integer workType) { + this.workType = workType; + } + + /** + * 第三方用户所在组织id + * @return + */ + public String getEmployeeId() { + return employeeId; + } + /** + * 第三方用户所在组织id + * @param employeeId + */ + public void setEmployeeId(String employeeId) { + this.employeeId = employeeId; + } + @Override public String toString() { return "ThirdMsgSendRecord{" + ",id=" + id + ",isDelete=" + isDelete + - ",createTime=" + createTime + - ",updateTime=" + updateTime + + ",gmtCreate=" + gmtCreate + + ",gmtModified=" + gmtModified + ",msgType=" + msgType + ",headBgcolor=" + headBgcolor + ",headText=" + headText + @@ -487,6 +568,9 @@ public class ThirdMsgSendRecord implements java.io.Serializable { ",appId=" + appId + ",taskId=" + taskId + ",remark=" + remark + + ",workId=" + workId + + ",workType=" + workType + + ",employeeId=" + employeeId + "}"; } } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/third/entity/WorkMsg.java b/src/main/java/com/lz/modules/third/entity/WorkMsg.java new file mode 100644 index 00000000..d4cc3b9e --- /dev/null +++ b/src/main/java/com/lz/modules/third/entity/WorkMsg.java @@ -0,0 +1,13 @@ +package com.lz.modules.third.entity; + +import lombok.Data; + +@Data +public class WorkMsg { + private String title; + private String content; + public WorkMsg(String title, String content){ + this.title = title; + this.content = content; + } +} diff --git a/src/main/java/com/lz/modules/third/service/ThirdMsgSendRecordService.java b/src/main/java/com/lz/modules/third/service/ThirdMsgSendRecordService.java index 5312c70d..07de4584 100644 --- a/src/main/java/com/lz/modules/third/service/ThirdMsgSendRecordService.java +++ b/src/main/java/com/lz/modules/third/service/ThirdMsgSendRecordService.java @@ -2,8 +2,10 @@ package com.lz.modules.third.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.common.utils.PageUtils; +import com.lz.modules.job.business.DingtalkBusiness; import com.lz.modules.third.entity.ThirdMsgSendRecord; +import java.util.List; import java.util.Map; /** @@ -36,4 +38,8 @@ public interface ThirdMsgSendRecordService extends IService PageUtils queryPage(Map params); void insert(ThirdMsgSendRecord thirdMsgSendRecord); + + ThirdMsgSendRecord selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus(Long workId, Long staffId, int workType, int status); + + List selectThirdMsgSendRecordsByRecordIds(List recordIds, int type, int status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/third/service/impl/ThirdMsgSendRecordServiceImpl.java b/src/main/java/com/lz/modules/third/service/impl/ThirdMsgSendRecordServiceImpl.java index e96997bb..94cf9aac 100644 --- a/src/main/java/com/lz/modules/third/service/impl/ThirdMsgSendRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/third/service/impl/ThirdMsgSendRecordServiceImpl.java @@ -12,6 +12,7 @@ import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; import java.util.Map; /** @@ -85,4 +86,20 @@ public class ThirdMsgSendRecordServiceImpl extends ServiceImpl selectThirdMsgSendRecordsByRecordIds(List recordIds, int type, int status){ + return thirdMsgSendRecordMapper.selectThirdMsgSendRecordsByRecordIds(recordIds, type, status); + } + } diff --git a/src/main/resources/mapper/app/ResultRecordMapper.xml b/src/main/resources/mapper/app/ResultRecordMapper.xml index fc84d68f..30a0d8cf 100644 --- a/src/main/resources/mapper/app/ResultRecordMapper.xml +++ b/src/main/resources/mapper/app/ResultRecordMapper.xml @@ -612,5 +612,13 @@ ) + + + + diff --git a/src/main/resources/mapper/flow/FlowChangeMapper.xml b/src/main/resources/mapper/flow/FlowChangeMapper.xml index 4b9e0a15..992c9e3d 100644 --- a/src/main/resources/mapper/flow/FlowChangeMapper.xml +++ b/src/main/resources/mapper/flow/FlowChangeMapper.xml @@ -99,5 +99,9 @@ update lz_flow_change set is_delete = 1 where id=#{id} limit 1 + + diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index 09ae0c8b..bad0de7b 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -295,5 +295,20 @@ ) + + + + + + diff --git a/src/main/resources/mapper/flow/ResultModelMapper.xml b/src/main/resources/mapper/flow/ResultModelMapper.xml index 2b8abc01..ed5b6e05 100644 --- a/src/main/resources/mapper/flow/ResultModelMapper.xml +++ b/src/main/resources/mapper/flow/ResultModelMapper.xml @@ -121,6 +121,26 @@ update lz_result_model set is_delete = 1 where evaluation_group_id=#{id} + + update + lz_result_model + + is_delete = #{isDelete}, + gmt_create = #{gmtCreate}, + name = #{name}, + evaluation_group_id = #{evaluationGroupId}, + type = #{type}, + max_count = #{maxCount}, + calculate_id = #{calculateId}, + grade_status = #{gradeStatus}, + grade_group_id = #{gradeGroupId}, + order_by = #{orderBy} + + weight = #{weight}, + ,gmt_modified = now() + where id = #{id} + + diff --git a/src/main/resources/mapper/third/ThirdMsgSendRecordMapper.xml b/src/main/resources/mapper/third/ThirdMsgSendRecordMapper.xml index 5008cb26..2db16611 100644 --- a/src/main/resources/mapper/third/ThirdMsgSendRecordMapper.xml +++ b/src/main/resources/mapper/third/ThirdMsgSendRecordMapper.xml @@ -6,8 +6,8 @@ - - + + @@ -30,90 +30,94 @@ + + + - id AS id, is_delete AS isDelete, create_time AS createTime, update_time AS updateTime, msg_type AS msgType, head_bgcolor AS headBgcolor, head_text AS headText, msg_title AS msgTitle, msg_content AS msgContent, media_id AS mediaId, duration AS duration, msg_url AS msgUrl, pic_url AS picUrl, pc_url AS pcUrl, form AS form, rich_num AS richNum, rich_unit AS richUnit, file_count AS fileCount, author AS author, action_card_btn_orientation AS actionCardBtnOrientation, action_card_btn_list AS actionCardBtnList, staff_id AS staffId, status AS status, app_id AS appId, task_id AS taskId, remark AS remark + id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, msg_type AS msgType, head_bgcolor AS headBgcolor, head_text AS headText, msg_title AS msgTitle, msg_content AS msgContent, media_id AS mediaId, duration AS duration, msg_url AS msgUrl, pic_url AS picUrl, pc_url AS pcUrl, form AS form, rich_num AS richNum, rich_unit AS richUnit, file_count AS fileCount, author AS author, action_card_btn_orientation AS actionCardBtnOrientation, action_card_btn_list AS actionCardBtnList, staff_id AS staffId, status AS status, app_id AS appId, task_id AS taskId, remark AS remark, work_id AS workId, work_type AS workType, employee_id AS employeeId insert into third_msg_send_record( - create_time, - update_time, - msg_type, - head_bgcolor, - head_text, - msg_title, - msg_content, - media_id, - duration, - msg_url, - pic_url, - pc_url, - form, - rich_num, - rich_unit, - file_count, - author, - action_card_btn_orientation, - action_card_btn_list, - staff_id, - status, - app_id, - task_id, - remark, - is_delete, - gmt_create, - gmt_modified + msg_type, + head_bgcolor, + head_text, + msg_title, + msg_content, + media_id, + duration, + msg_url, + pic_url, + pc_url, + form, + rich_num, + rich_unit, + file_count, + author, + action_card_btn_orientation, + action_card_btn_list, + staff_id, + status, + app_id, + task_id, + remark, + work_id, + work_type, + employee_id, + is_delete, + gmt_create, + gmt_modified )values( - #{ createTime}, - #{ updateTime}, - #{ msgType}, - #{ headBgcolor}, - #{ headText}, - #{ msgTitle}, - #{ msgContent}, - #{ mediaId}, - #{ duration}, - #{ msgUrl}, - #{ picUrl}, - #{ pcUrl}, - #{ form}, - #{ richNum}, - #{ richUnit}, - #{ fileCount}, - #{ author}, - #{ actionCardBtnOrientation}, - #{ actionCardBtnList}, - #{ staffId}, - #{ status}, - #{ appId}, - #{ taskId}, - #{ remark}, - 0, - now(), - now() + #{ msgType}, + #{ headBgcolor}, + #{ headText}, + #{ msgTitle}, + #{ msgContent}, + #{ mediaId}, + #{ duration}, + #{ msgUrl}, + #{ picUrl}, + #{ pcUrl}, + #{ form}, + #{ richNum}, + #{ richUnit}, + #{ fileCount}, + #{ author}, + #{ actionCardBtnOrientation}, + #{ actionCardBtnList}, + #{ staffId}, + #{ status}, + #{ appId}, + #{ taskId}, + #{ remark}, + #{ workId}, + #{ workType}, + #{ employeeId}, + 0, + now(), + now() ) update - third_msg_send_record + third_msg_send_record is_delete = #{isDelete}, - create_time = #{createTime}, - update_time = #{updateTime}, + gmt_create = #{gmtCreate}, msg_type = #{msgType}, head_bgcolor = #{headBgcolor}, head_text = #{headText}, @@ -135,7 +139,10 @@ status = #{status}, app_id = #{appId}, task_id = #{taskId}, - remark = #{remark} + remark = #{remark}, + work_id = #{workId}, + work_type = #{workType}, + employee_id = #{employeeId} ,gmt_modified = now() where id = #{id} @@ -144,11 +151,10 @@ update - third_msg_send_record - set + third_msg_send_record + set is_delete = #{isDelete}, - create_time = #{createTime}, - update_time = #{updateTime}, + gmt_create = #{gmtCreate}, msg_type = #{msgType}, head_bgcolor = #{headBgcolor}, head_text = #{headText}, @@ -170,15 +176,30 @@ status = #{status}, app_id = #{appId}, task_id = #{taskId}, - remark = #{remark} + remark = #{remark}, + work_id = #{workId}, + work_type = #{workType}, + employee_id = #{employeeId} ,gmt_modified = now() where id = #{id} - - update third_msg_send_record set is_delete = 1 where id=#{id} limit 1 + update third_msg_send_record set is_delete = 1 where id=#{id} limit 1 + + + + diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java index cf1028c3..09095683 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -126,7 +126,7 @@ public class MysqlMain { List list = new ArrayList(); - list.add(new TablesBean("lz_result_detail")); + list.add(new TablesBean("third_msg_send_record")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments();