From 2be7b38271b63fb3e142e813f0a4a7ccf01cb4a0 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Tue, 19 Apr 2022 19:38:59 +0800 Subject: [PATCH] =?UTF-8?q?update.=20=E6=B3=95=E8=A7=84=E6=B8=85=E5=8D=95?= =?UTF-8?q?=20=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=20=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/ProjectLawsInventoryEO.java | 15 +- .../project/job/InventoryAffirmJob.java | 142 ++++++++++++++++++ .../IProjectLawsInventoryEOService.java | 2 + .../ProjectLawsInventoryEOServiceImpl.java | 61 ++++---- .../ProjectRelatedPersonnelServiceImpl.java | 6 +- 5 files changed, 190 insertions(+), 36 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLawsInventoryEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLawsInventoryEO.java index 8637a3040..ef424d92c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLawsInventoryEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLawsInventoryEO.java @@ -310,10 +310,15 @@ public class ProjectLawsInventoryEO implements Serializable { @ApiModelProperty(value = "任务确认-截止时间") private Date taskAffirmDueDate; - /**任务确认-截止时间*/ - @Excel(name = "任务确认-截止时间", width = 15, format = "yyyy-MM-dd") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "任务确认-截止时间") + /**发送消息标识 三天*/ + @ApiModelProperty(value = "发送消息标识 三天") private String sendMsgFlag; + + /**发送消息标识 结束当天*/ + @ApiModelProperty(value = "发送消息标识 结束当天") + private String sendMsgCurrentFlag; + + @TableField(exist = false) + @ApiModelProperty(value = "中英文切换标识") + private String cut; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java new file mode 100644 index 000000000..166c9eab0 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java @@ -0,0 +1,142 @@ +package com.jero.modules.project.job; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.entity.ProjectNameInfoEO; +import com.jero.modules.project.enums.InventoryAffirmStatusEnum; +import com.jero.modules.project.enums.SendMsgFlagEnum; +import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper; +import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; +import com.jero.modules.project.mapper.ProjectNameInfoEOMapper; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.system.entity.SysUser; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 清单确认定时器 + */ +@Slf4j +public class InventoryAffirmJob implements Job { + + @Autowired + private ProjectLawsInventoryEOMapper projectLawsInventoryEOMapper; + + @Autowired + private ProjectLibraryBaseMapper projectLibraryBaseMapper; + + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + + @Autowired + private ProjectNameInfoEOMapper projectNameInfoEOMapper; + + /** + * 清单任务到达截止时间后,给用户发送消息 + */ + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + //获取状态为待确认的数据 + QueryWrapper queryWrapperInventory = new QueryWrapper<>(); + queryWrapperInventory.lambda().eq(ProjectLawsInventoryEO::getInventoryAffirmStatus, InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue()); + List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOList)){ + + List projectLibraryIdList = projectLawsInventoryEOList.stream().distinct() + .map(ProjectLawsInventoryEO::getProjectLibraryId).collect(Collectors.toList()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().in(ProjectLibraryBase::getId,projectLibraryIdList); + List projectLibraryBaseList = projectLibraryBaseMapper.selectList(queryWrapper); + + if(CollectionUtils.isNotEmpty(projectLibraryBaseList)){ + SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); + + Date currentDate = new Date(); + + //获取后三天前的时间 + Calendar calendar=new GregorianCalendar(); + calendar.setTime(new Date()); + calendar.add(Calendar.DATE,3); + Date threeDays = calendar.getTime(); + + String threeDaysStr = sdf.format(threeDays); + String currentDateStr = sdf.format(currentDate); + + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) { + + QueryWrapper projectNameInfoEOQueryWrapper = new QueryWrapper<>(); + projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectName()); + ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper); + + List threeDaysUserIdList = new ArrayList<>(); + List currentDaysUserIdList = new ArrayList<>(); + + for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOList) { + if(StringUtils.equals(projectLibraryBase.getId(),projectLawsInventoryEO.getProjectLibraryId())){ + //如果清单确认结束日期是当前日期 + if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){ + if(StringUtils.isEmpty(projectLawsInventoryEO.getSendMsgFlag())){ + if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())){ + currentDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId()); + }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())){ + currentDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId()); + } + projectLawsInventoryEO.setSendMsgFlag(SendMsgFlagEnum.FALSE.getValue()); + projectLawsInventoryEOMapper.updateById(projectLawsInventoryEO); + } + } + + //如果清单确认结束时间是当前系统时间后三天 + if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){ + if(StringUtils.isEmpty(projectLawsInventoryEO.getSendMsgCurrentFlag())){ + if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())){ + threeDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId()); + }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())){ + threeDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId()); + } + projectLawsInventoryEO.setSendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue()); + projectLawsInventoryEOMapper.updateById(projectLawsInventoryEO); + } + } + } + } + + if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){ + threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList()); + + /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*/ + String msgContentEN = "The remaining processing time for the regulation task confirmationof GB 7258 in" + + projectNameInfoEO.getProjectName() + + "(project name) is 3 days. Please check andhandle it in time."; + //发送消息 + projectLawsInventoryEOService.sendMessage(msgContentEN,threeDaysUserIdList,projectLibraryBase.getId()); + } + + if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){ + currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); + + /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/ + String msgContentEN = "The the regulation task confirmation of GB 7258 in " + + projectNameInfoEO.getProjectName() + + "(projectname) is coming to an end today. Please check and deal with it intime"; + //发送消息 + projectLawsInventoryEOService.sendMessage(msgContentEN,currentDaysUserIdList,projectLibraryBase.getId()); + } + } + } + } + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java index cf582993c..a94b417ec 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java @@ -70,6 +70,8 @@ public interface IProjectLawsInventoryEOService extends IService updateStatusBatch(Map params); + void sendMessage(String msgContent, List userIdList,String projectLibraryId); + /** * 匹配相关人员 * @param params diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index 948937535..bcaf7b7c1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.jero.common.api.vo.Result; import com.jero.common.constant.CommonConstant; import com.jero.common.constant.WebsocketConst; +import com.jero.common.constant.enums.CutEnum; import com.jero.common.constant.enums.MessageTypeEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.query.QueryGenerator; @@ -25,7 +26,6 @@ import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper; import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper; import com.jero.modules.project.service.IProjectLawsInventoryEOService; -import com.jero.modules.project.service.IProjectRelatedPersonnelService; import com.jero.modules.system.entity.SysAnnouncement; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.mapper.SysUserMapper; @@ -195,7 +195,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl result = super.baseMapper.selectList(projectLawsInventoryEOQueryWrapper); - dataDispose(result,currentUser,isProjectRole); + dataDispose(result,currentUser,isProjectRole,projectLawsInventoryEO.getCut()); return result; } @@ -203,7 +203,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl list,LoginUser currentUser,int isProjectRole){ + public void dataDispose(List list,LoginUser currentUser,int isProjectRole,String cut){ if(CollectionUtils.isNotEmpty(list)){ List userIdList = new ArrayList<>(); List deliverableList = new ArrayList<>(); @@ -252,19 +252,19 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl homologationEngineerId.equals(e.getId())). - map(SysUser::getRealname).collect(Collectors.joining(",")); + map(SysUser::getUsername).collect(Collectors.joining(",")); projectLawsInventoryEO.setHomologationEngineerName(homologationEngineerName); } String regulationOwnerId = projectLawsInventoryEO.getRegulationOwnerId(); if(StringUtils.isNotEmpty(regulationOwnerId)){ String regulationOwnerName = sysUsers.stream().filter(e -> regulationOwnerId.equals(e.getId())). - map(SysUser::getRealname).collect(Collectors.joining(",")); + map(SysUser::getUsername).collect(Collectors.joining(",")); projectLawsInventoryEO.setRegulationOwnerName(regulationOwnerName); } String engineeringInterfacePerson = projectLawsInventoryEO.getEngineeringInterfacePerson(); if(StringUtils.isNotEmpty(engineeringInterfacePerson)){ String engineeringInterfacePersonName = sysUsers.stream().filter(e -> engineeringInterfacePerson.equals(e.getId())). - map(SysUser::getRealname).collect(Collectors.joining(",")); + map(SysUser::getUsername).collect(Collectors.joining(",")); projectLawsInventoryEO.setEngineeringInterfacePersonName(engineeringInterfacePersonName); } } @@ -272,7 +272,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl projectLawsInventoryEOS = this.baseMapper.selectList(queryWrapper); ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectOne(new QueryWrapper() .lambda().eq(ProjectLibraryBase::getId, projectLibraryId)); + List userIdList = new ArrayList<>(); for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOS) { //如果该数据的状态为 未发起或拒绝 可以发起清单确认 @@ -464,16 +470,26 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl userIdList,String projectLibraryId){ - String idTemp = projectLawsInventoryEO.getProjectLibraryId(); - - List userIdList = new ArrayList<>(); - String homologationEngineerId = projectLawsInventoryEO.getHomologationEngineerId(); - String regulationOwnerId = projectLawsInventoryEO.getRegulationOwnerId(); - if(StringUtils.isNotEmpty(homologationEngineerId)){ - userIdList.add(homologationEngineerId); - } - if(StringUtils.isNotEmpty(regulationOwnerId)){ - userIdList.add(regulationOwnerId); - } - userIdList = userIdList.stream().distinct().collect(Collectors.toList()); + String idTemp = projectLibraryId; List sysUsers = sysUserService.listByIds(userIdList); List thirdIdList = new ArrayList<>(); if(CollectionUtils.isNotEmpty(sysUsers)){ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); - } //系统消息 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java index 4ac2a579b..786bf0148 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java @@ -286,7 +286,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("name",sysUser.getRealname()); + map.put("name",sysUser.getUsername()); map.put("value",sysUser.getId()); lawEngineerList.add(map); } @@ -300,7 +300,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("name",sysUser.getRealname()); + map.put("name",sysUser.getUsername()); map.put("value",sysUser.getId()); certificationEngineerList.add(map); } @@ -313,7 +313,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("name",sysUser.getRealname()); + map.put("name",sysUser.getUsername()); map.put("value",sysUser.getId()); engineeringInterfacePersonList.add(map); }