From 6276d7edce8a8a68f406b4fe7dd072e92d956985 Mon Sep 17 00:00:00 2001 From: wulin Date: Thu, 19 Nov 2020 17:53:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lz/common/utils/DingTalkUtil.java | 68 +++++-- .../lz/modules/flow/dao/FlowChangeMapper.java | 1 + .../lz/modules/flow/dao/FlowRecordMapper.java | 5 + .../modules/flow/dao/ResultModelMapper.java | 2 + .../flow/service/FlowChangeService.java | 2 + .../flow/service/FlowRecordService.java | 6 + .../service/impl/FlowChangeServiceImpl.java | 5 + .../service/impl/FlowRecordServiceImpl.java | 15 ++ .../service/impl/ResultModelServiceImpl.java | 2 +- .../job/business/DingtalkBusiness.java | 185 ++++++++++++++---- .../third/dao/ThirdMsgSendRecordMapper.java | 5 + .../third/entity/ThirdMsgSendRecord.java | 124 ++++++++++-- .../com/lz/modules/third/entity/WorkMsg.java | 13 ++ .../service/ThirdMsgSendRecordService.java | 2 + .../impl/ThirdMsgSendRecordServiceImpl.java | 11 ++ .../mapper/flow/FlowChangeMapper.xml | 4 + .../mapper/flow/FlowRecordMapper.xml | 15 ++ .../mapper/flow/ResultModelMapper.xml | 20 ++ .../mapper/third/ThirdMsgSendRecordMapper.xml | 151 +++++++------- src/test/java/com/lz/mysql/MysqlMain.java | 2 +- 20 files changed, 484 insertions(+), 154 deletions(-) create mode 100644 src/main/java/com/lz/modules/third/entity/WorkMsg.java diff --git a/src/main/java/com/lz/common/utils/DingTalkUtil.java b/src/main/java/com/lz/common/utils/DingTalkUtil.java index ceffca49..ec263c08 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.insertThirdMsgSendRecord(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/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..ce574515 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 @@ -133,7 +133,7 @@ public class ResultModelServiceImpl extends ServiceImpl threadSendMessages = new ArrayList<>(); - @Value("${dingtalk.appid}") private String appid; @@ -272,7 +281,6 @@ public class DingtalkBusiness { WorkMsgTypeEnum workMsgTypeEnum = WorkMsgTypeEnum.findRoleTypeByCode(type); ThreadSendMessage threadSendMessage = new ThreadSendMessage(fromStaff, toStaffids, workMsgTypeEnum, appid); - threadSendMessages.add(threadSendMessage);//防止提前回收 Thread thread = new Thread(threadSendMessage); thread.start(); @@ -365,6 +373,24 @@ public class DingtalkBusiness { this.appid = appid; } + 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); @@ -387,60 +413,133 @@ public class DingtalkBusiness { 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, "霖梓控股"); + 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()){ //发送开始评分通知 - 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{ + 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 { //流程流转通知 - List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(info.getResultRecord().getId(), 2); - if(flowRecords.size() == 0){ - //任务结束 - }else{ - List ids = flowRecords.stream().map(new Function() { - @Override - public Long apply(FlowRecord flowRecord) { - return flowRecord.getApprovalStaffId(); + + 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, 0); + 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, 0); + 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, 0); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + } + } + } + } + } + }else{ + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(info.getResultRecord().getId(), 2); + if(flowRecords.size() > 0){//给下一步骤需要处理的人发送待办任务 + 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{ + 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){ + logger.info("将要更新人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), + flowRecord.getApprovalStaffName()); + ThirdMsgSendRecord thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + info.getResultRecord().getId(), + flowRecord.getApprovalStaffId(), 1, 0); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + }else{ + logger.info("无需更新待办任务"); + } + } } - }).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, "霖梓控股"); } } - } - + } }else{ logger.info("ThreadSendMessage token无效"); ; } } - threadSendMessages.remove(this); } } } 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..9f5c6d71 100644 --- a/src/main/java/com/lz/modules/third/dao/ThirdMsgSendRecordMapper.java +++ b/src/main/java/com/lz/modules/third/dao/ThirdMsgSendRecordMapper.java @@ -30,4 +30,9 @@ 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); } \ 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..4ac5432a 100644 --- a/src/main/java/com/lz/modules/third/service/ThirdMsgSendRecordService.java +++ b/src/main/java/com/lz/modules/third/service/ThirdMsgSendRecordService.java @@ -36,4 +36,6 @@ public interface ThirdMsgSendRecordService extends IService PageUtils queryPage(Map params); void insert(ThirdMsgSendRecord thirdMsgSendRecord); + + ThirdMsgSendRecord selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus(Long workId, Long staffId, int workType, 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..f33d9f5e 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 @@ -85,4 +85,15 @@ public class ThirdMsgSendRecordServiceImpl extends ServiceImpl + + 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..d1a81b1c 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,22 @@ 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();