项目库-任务清单表-流程调用、项目库-任务清单表-提醒办理接口
This commit is contained in:
+1
@@ -140,6 +140,7 @@ public class ShiroConfig {
|
||||
filterChainDefinitionMap.put("/opensso/**", "anon"); //单点登录
|
||||
|
||||
filterChainDefinitionMap.put("/project/projectLawsInventoryEO/processCall", "anon"); // 项目库-法规清单 工作流处理数据接口排除
|
||||
filterChainDefinitionMap.put("/project/projectTaskInventoryEO/processCall", "anon"); // 项目库-任务清单 工作流处理数据接口排除
|
||||
filterChainDefinitionMap.put("/sys/user/querySysUserListByIdList", "anon"); // 工作流根据用户idList获取用户信息接口
|
||||
|
||||
// 添加自己的过滤器并且取名为jwt
|
||||
|
||||
+25
@@ -4,6 +4,8 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.project.entity.ProjectTaskInventoryEO;
|
||||
@@ -167,4 +169,27 @@ public class ProjectTaskInventoryEOController extends JeroController<ProjectTask
|
||||
return super.importExcel(request, response, ProjectTaskInventoryEO.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 流程调用接口
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "项目库-任务清单表-流程调用")
|
||||
@ApiOperation(value="项目库-任务清单表-流程调用", notes="项目库-任务清单表-流程调用")
|
||||
@PostMapping(value = "/processCall")
|
||||
public Result<?> processCall(@RequestBody JSONObject jsonObject){
|
||||
return this.projectTaskInventoryEOService.processCall(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提醒办理
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "项目库-任务清单表-提醒办理")
|
||||
@ApiOperation(value="项目库-任务清单表-提醒办理", notes="项目库-任务清单表-提醒办理")
|
||||
@PostMapping(value = "/remindDispose")
|
||||
public Result<?> remindDispose(@RequestBody JSONObject jsonObject){
|
||||
return this.projectTaskInventoryEOService.remindDispose(jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
+3
@@ -8,6 +8,9 @@ public enum MsgTypeEnum {
|
||||
TASK_AFFIRM_ISSUE_DRE_MSG("任务确认分配dre消息","taskAffirmIssueDreMsg"),
|
||||
TASK_AFFIRM_DRE_ACCEPTED("任务确认DRE通过消息","taskAffirmDreAccepted"),
|
||||
TASK_AFFIRM_DRE_REJECTED("任务确认DRE退回消息","taskAffirmDreRejected"),
|
||||
|
||||
DESIGN_ISSUE_DRE_MSG("设计符合性确认分配dre消息","designIssueDreMsg"),
|
||||
DESIGN_REMIND_MSG("设计符合性提醒办理","designRemindMsg"),
|
||||
;
|
||||
|
||||
String name;
|
||||
|
||||
+1
@@ -18,6 +18,7 @@ public enum OperatorTypeEnum {
|
||||
|
||||
|
||||
TASK_AFFIRM_QUERY("任务确认流程,查询法规清单信息","taskAffirmQuery"),
|
||||
ADD_TASK_INVENTORY_DETAIL("添加法规清单明细信息","addTaskInventoryDetail"),
|
||||
;
|
||||
|
||||
String name;
|
||||
|
||||
+2
-2
@@ -130,9 +130,9 @@ public class InventoryAffirmJob implements Job {
|
||||
currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
|
||||
|
||||
/*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/
|
||||
String msgContentEN = "The the regulation task confirmation of GB 7258 in "
|
||||
String msgContentEN = "The the regulation list confirmation of "
|
||||
+ projectNameInfoEO.getProjectName()
|
||||
+ "(projectname) is coming to an end today. Please check and deal with it intime";
|
||||
+ "(project name) is coming to an end today. Please check and deal with it in time";
|
||||
//发送消息
|
||||
projectLawsInventoryEOService.sendMessage(msgContentEN,currentDaysUserIdList,projectLibraryBase.getId());
|
||||
}
|
||||
|
||||
+16
@@ -1,5 +1,7 @@
|
||||
package com.jero.modules.project.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.project.entity.ProjectTaskInventoryEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
@@ -60,4 +62,18 @@ public interface IProjectTaskInventoryEOService extends IService<ProjectTaskInve
|
||||
* @return
|
||||
*/
|
||||
List<ProjectTaskInventoryEO> queryList(ProjectTaskInventoryEO projectTaskInventoryEO, HttpServletRequest req);
|
||||
|
||||
/**
|
||||
* 项目库-任务清单表-流程调用
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
Result<?> processCall(JSONObject jsonObject);
|
||||
|
||||
/**
|
||||
* 项目库-任务清单表-提醒办理
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
Result<?> remindDispose(JSONObject jsonObject);
|
||||
}
|
||||
|
||||
+129
-12
@@ -1,21 +1,18 @@
|
||||
package com.jero.modules.project.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
|
||||
import com.jero.modules.project.entity.ProjectLibraryBase;
|
||||
import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO;
|
||||
import com.jero.modules.project.entity.ProjectTaskInventoryEO;
|
||||
import com.jero.modules.project.enums.InventoryAffirmStatusEnum;
|
||||
import com.jero.modules.project.enums.ProjectRoleEnum;
|
||||
import com.jero.modules.project.enums.TaskAffirmStatusEnum;
|
||||
import com.jero.modules.project.enums.TaskStatusEnum;
|
||||
import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper;
|
||||
import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
|
||||
import com.jero.modules.project.mapper.ProjectTaskInventoryDetailEOMapper;
|
||||
import com.jero.modules.project.mapper.ProjectTaskInventoryEOMapper;
|
||||
import com.jero.modules.project.entity.*;
|
||||
import com.jero.modules.project.enums.*;
|
||||
import com.jero.modules.project.mapper.*;
|
||||
import com.jero.modules.project.service.IProjectTaskInventoryEOService;
|
||||
import com.jero.modules.project.util.SendMessageUtils;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.mapper.SysUserMapper;
|
||||
import com.jero.modules.wkflow.enums.FlowTypeEnum;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -24,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -50,6 +48,12 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
|
||||
@Autowired
|
||||
private ProjectTaskInventoryDetailEOMapper projectTaskInventoryDetailEOMapper;
|
||||
|
||||
@Autowired
|
||||
private ProjectNameInfoEOMapper projectNameInfoEOMapper;
|
||||
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@@ -175,6 +179,80 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<?> processCall(JSONObject jsonObject) {
|
||||
String requestSource = jsonObject.getString("requestSource");
|
||||
if(StringUtils.isEmpty(requestSource)){
|
||||
throw new JeroBootException("请求来源不能为空!");
|
||||
}
|
||||
if(!StringUtils.equals(requestSource, RequestSourceEnum.WORK_FLOW.getValue())){
|
||||
throw new JeroBootException("来源有误,没有权限调用该接口!");
|
||||
}
|
||||
String operatorType = jsonObject.getString("operatorType");
|
||||
if(StringUtils.isEmpty(operatorType)){
|
||||
throw new JeroBootException("操作类型不能为空!");
|
||||
}
|
||||
|
||||
if(StringUtils.equals(operatorType,OperatorTypeEnum.UPDATE_STATUS.getValue())){
|
||||
ProjectTaskInventoryEO projectTaskInventoryEO = JSONObject.parseObject(jsonObject.toString(), ProjectTaskInventoryEO.class);
|
||||
this.baseMapper.updateById(projectTaskInventoryEO);
|
||||
}else if(StringUtils.equals(operatorType,OperatorTypeEnum.SEND_MSG.getValue())){
|
||||
workFlowSendMsg(jsonObject);
|
||||
}else if(StringUtils.equals(operatorType,OperatorTypeEnum.ADD_TASK_INVENTORY_DETAIL.getValue())){
|
||||
//添加法规清单明细数据。
|
||||
JSONArray taskInventoryDetailList = jsonObject.getJSONArray("taskInventoryDetailList");
|
||||
ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO = null;
|
||||
for (Object detail : taskInventoryDetailList) {
|
||||
projectTaskInventoryDetailEO = JSONObject.parseObject(JSONObject.toJSONString(detail),ProjectTaskInventoryDetailEO.class);
|
||||
projectTaskInventoryDetailEOMapper.insert(projectTaskInventoryDetailEO);
|
||||
}
|
||||
}
|
||||
|
||||
return new Result<>().success("调用成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目库-任务清单表-提醒办理
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Result<?> remindDispose(JSONObject jsonObject) {
|
||||
|
||||
//发送消息类型
|
||||
String msgType = jsonObject.getString("msgType");
|
||||
|
||||
if(StringUtils.isEmpty(msgType)){
|
||||
throw new JeroBootException("发送消息类型不能为空,请检查!");
|
||||
}
|
||||
String serialNumber = jsonObject.getString("serialNumber");
|
||||
//项目库id
|
||||
String projectLibraryId = jsonObject.getString("projectLibraryId");
|
||||
|
||||
String msgContentEN = "";
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
|
||||
ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectOne(new QueryWrapper<ProjectLibraryBase>()
|
||||
.lambda().eq(ProjectLibraryBase::getId, projectLibraryId));
|
||||
|
||||
QueryWrapper<ProjectNameInfoEO> projectNameInfoEOQueryWrapper = new QueryWrapper<>();
|
||||
projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId());
|
||||
ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper);
|
||||
|
||||
if(StringUtils.equals(msgType,MsgTypeEnum.DESIGN_REMIND_MSG.getValue())){
|
||||
String dreUserIds = jsonObject.getString("dreUserIds"); //dre用户id
|
||||
userIdList.addAll(Arrays.asList(dreUserIds.split(",")));
|
||||
msgContentEN = "Please check and deal with the design compliance confirmation process of "
|
||||
+ serialNumber + " in "+ projectNameInfoEO.getProjectName() + " (project name) in time.";
|
||||
}
|
||||
|
||||
if(CollectionUtils.isNotEmpty(userIdList) && StringUtils.isNotEmpty(msgContentEN)){
|
||||
//发送消息
|
||||
SendMessageUtils.sendMessage(msgContentEN,userIdList,projectLibraryId);
|
||||
}
|
||||
return new Result<>().success("提醒办理成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建任务清单列表数据
|
||||
* @param projectTaskInventoryEOList
|
||||
@@ -305,4 +383,43 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 工作流发送消息
|
||||
* @param jsonObject
|
||||
*/
|
||||
public void workFlowSendMsg(JSONObject jsonObject){
|
||||
String msgType = jsonObject.getString("msgType"); //发送消息类型
|
||||
if(StringUtils.isEmpty(msgType)){
|
||||
throw new JeroBootException("发送消息类型不能为空,请检查!");
|
||||
}
|
||||
String id = jsonObject.getString("id"); //法规清单id
|
||||
String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
|
||||
String serialNumber = jsonObject.getString("serialNumber"); //编号
|
||||
String projectLibraryId = jsonObject.getString("projectLibraryId"); //项目库id
|
||||
|
||||
ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectOne(new QueryWrapper<ProjectLibraryBase>()
|
||||
.lambda().eq(ProjectLibraryBase::getId, projectLibraryId));
|
||||
|
||||
QueryWrapper<ProjectNameInfoEO> projectNameInfoEOQueryWrapper = new QueryWrapper<>();
|
||||
projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId());
|
||||
ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper);
|
||||
|
||||
SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getId, currentUserId));
|
||||
|
||||
String msgContentEN = "";
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
String dreUserIds = jsonObject.getString("dreUserIds"); //dre用户id
|
||||
userIdList.addAll(Arrays.asList(dreUserIds.split(",")));
|
||||
|
||||
if (StringUtils.equals(msgType, MsgTypeEnum.DESIGN_ISSUE_DRE_MSG.getValue())) {
|
||||
msgContentEN = sysUser.getUsername() + "has distributed the design compliance confirmation process of " + serialNumber + " in "+ projectNameInfoEO.getProjectName()
|
||||
+ " (project name) to you. Please check and handle it in time.";
|
||||
}
|
||||
|
||||
if(CollectionUtils.isNotEmpty(userIdList) && StringUtils.isNotEmpty(msgContentEN)){
|
||||
//发送消息
|
||||
SendMessageUtils.sendMessage(msgContentEN,userIdList,id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.jero.modules.project.util;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.common.constant.WebsocketConst;
|
||||
import com.jero.common.constant.enums.MessageTypeEnum;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.message.websocket.WebSocket;
|
||||
import com.jero.modules.system.entity.SysAnnouncement;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysAnnouncementService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class SendMessageUtils {
|
||||
private final static Logger logger= LoggerFactory.getLogger(SendMessageUtils.class);
|
||||
|
||||
private static ISysUserService sysUserService;
|
||||
@Autowired
|
||||
public void setISysUserService(ISysUserService sysUserService){
|
||||
SendMessageUtils.sysUserService = sysUserService;
|
||||
}
|
||||
|
||||
private static ISysAnnouncementService sysAnnouncementService;
|
||||
@Autowired
|
||||
public void setISysAnnouncementService(ISysAnnouncementService sysAnnouncementService){
|
||||
SendMessageUtils.sysAnnouncementService = sysAnnouncementService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private static IFeishuService iFeishuService;
|
||||
public void setIFeishuService(IFeishuService iFeishuService){
|
||||
SendMessageUtils.iFeishuService = iFeishuService;
|
||||
}
|
||||
|
||||
private static WebSocket webSocket;
|
||||
@Autowired
|
||||
public void setWebSocket(IFeishuService iFeishuService){
|
||||
SendMessageUtils.iFeishuService = iFeishuService;
|
||||
}
|
||||
|
||||
public static void sendMessage(String msgContent, List<String> userIdList, String projectLibraryId) {
|
||||
String idTemp = projectLibraryId;
|
||||
|
||||
List<SysUser> sysUsers = sysUserService.listByIds(userIdList);
|
||||
List<String> thirdIdList = new ArrayList<>();
|
||||
if(CollectionUtils.isNotEmpty(sysUsers)){
|
||||
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
//系统消息
|
||||
SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, msgContent, "");
|
||||
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
|
||||
sendWebsocket(idTemp, idTemp);
|
||||
|
||||
//飞书消息
|
||||
try {
|
||||
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), msgContent, MessageTypeEnum.PUSH.getName(), "");
|
||||
} catch (IOException e) {
|
||||
logger.error("飞书消息推送失败");
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static SysAnnouncement getSysAnnouncement(List<String> userIdList, String content, String contentInfo) {
|
||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||
sysAnnouncement.setDelFlag("0");
|
||||
sysAnnouncement.setSendStatus("0");
|
||||
sysAnnouncement.setSendTime(new Date());
|
||||
sysAnnouncement.setMsgCategory(MessageTypeEnum.READ.getValue());//消息类型
|
||||
sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR);//指定用户
|
||||
sysAnnouncement.setMsgContent(content);
|
||||
sysAnnouncement.setMsgContentInfo(contentInfo);
|
||||
sysAnnouncement.setUserIds(StringUtils.join(userIdList, ","));
|
||||
return sysAnnouncement;
|
||||
}
|
||||
|
||||
private static void sendWebsocket(String msgId, String msgTet) {
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_TOPIC);
|
||||
obj.put(WebsocketConst.MSG_ID, msgId);
|
||||
obj.put(WebsocketConst.MSG_TXT, msgTet);
|
||||
webSocket.sendMessage(obj.toJSONString());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user