diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8335f29..5e64206 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -167,6 +167,14 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "提醒次数",dataType = "Integer") + @TableField(exist = false) + private Integer remindNums; + + @ApiModelProperty(value = "额外内容",dataType = "String") + @TableField("extra_content") + private String extraContent; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageSourceModule, String messageTitle, String messageTopic, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; this.remindDeptId = remindDeptId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8335f29..5e64206 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -167,6 +167,14 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "提醒次数",dataType = "Integer") + @TableField(exist = false) + private Integer remindNums; + + @ApiModelProperty(value = "额外内容",dataType = "String") + @TableField("extra_content") + private String extraContent; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageSourceModule, String messageTitle, String messageTopic, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; this.remindDeptId = remindDeptId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java index 9d0890e..b54c607 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -460,9 +462,15 @@ checkpointWrapper.eq("equipment_no", equipmentNo); List checkpointList = checkpointMapper.selectList(checkpointWrapper); QueryWrapper standardEquipmentWrapper = new QueryWrapper<>(); + standardEquipmentWrapper.eq("equipment_id", id); List equipmentRelations = standardEquipmentRelationMapper.selectList(standardEquipmentWrapper); List idList = equipmentRelations.stream().map(BizEquipmentStandardEquipmentRelation::getStandardId).collect(Collectors.toList()); - List standardInfoList = standardInfoMapper.selectBatchIds(idList); + List standardInfoList = null; + if (CollectionUtils.isEmpty(idList)) { + standardInfoList = Collections.emptyList(); + } else { + standardInfoList = standardInfoMapper.selectBatchIds(idList); + } DictCodeUtils.convertDictCodeToName(equipmentInfoApproval); response.setEquipmentInfoApproval(equipmentInfoApproval); response.setTechnicalTargetList(targetList); @@ -1063,13 +1071,58 @@ return ReturnUtil.success(true); } String instructionsFile = equipmentInfoApproval.getInstructionsFile(); + List instructions = Optional.ofNullable(instructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); String infoInstructionsFile = bizEquipmentInfo.getInstructionsFile(); - if ((instructionsFile == null || instructionsFile.isEmpty()) ^ (infoInstructionsFile == null || infoInstructionsFile.isEmpty())) { + List infoInstructions = Optional.ofNullable(infoInstructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((instructions == null || instructions.isEmpty()) ^ (infoInstructions == null || infoInstructions.isEmpty())) { return ReturnUtil.success(true); } - if (StringUtils.isNotBlank(instructionsFile) && StringUtils.isNotBlank(infoInstructionsFile) && !Objects.equals(instructionsFile, infoInstructionsFile)) { + if (!CollectionUtils.isEmpty(instructions) && !CollectionUtils.isEmpty(infoInstructions) && instructions.size() == infoInstructions.size()) { + Collections.sort(instructions); + Collections.sort(infoInstructions); + Iterator it1 = instructions.iterator(); + Iterator it2 = infoInstructions.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } + + String technicalFile = equipmentInfoApproval.getTechnicalFile(); + List technicalFiles = Optional.ofNullable(technicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + String infoTechnicalFile = bizEquipmentInfo.getTechnicalFile(); + List infoTechnicalFiles = Optional.ofNullable(infoTechnicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((technicalFiles == null || technicalFiles.isEmpty()) ^ (infoTechnicalFiles == null || infoTechnicalFiles.isEmpty())) { return ReturnUtil.success(true); } + if (!CollectionUtils.isEmpty(technicalFiles) && !CollectionUtils.isEmpty(infoTechnicalFiles) && technicalFiles.size() == infoTechnicalFiles.size()) { + Collections.sort(technicalFiles); + Collections.sort(infoTechnicalFiles); + Iterator it1 = technicalFiles.iterator(); + Iterator it2 = infoTechnicalFiles.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } String traceCompany = equipmentInfoApproval.getTraceCompany(); String infoTraceCompany = bizEquipmentInfo.getTraceCompany(); if ((traceCompany == null || traceCompany.isEmpty()) ^ (infoTraceCompany == null || infoTraceCompany.isEmpty())) { @@ -1094,7 +1147,6 @@ if (StringUtils.isNotBlank(measureValidDate) && StringUtils.isNotBlank(infoMeasureValidDate) && !Objects.equals(measureValidDate, infoMeasureValidDate)) { return ReturnUtil.success(true); } - String meterIdentify = equipmentInfoApproval.getMeterIdentify(); String infoMeterIdentify = bizEquipmentInfo.getMeterIdentify(); if ((meterIdentify == null || meterIdentify.isEmpty()) ^ (infoMeterIdentify == null || infoMeterIdentify.isEmpty())) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8335f29..5e64206 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -167,6 +167,14 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "提醒次数",dataType = "Integer") + @TableField(exist = false) + private Integer remindNums; + + @ApiModelProperty(value = "额外内容",dataType = "String") + @TableField("extra_content") + private String extraContent; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageSourceModule, String messageTitle, String messageTopic, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; this.remindDeptId = remindDeptId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java index 9d0890e..b54c607 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -460,9 +462,15 @@ checkpointWrapper.eq("equipment_no", equipmentNo); List checkpointList = checkpointMapper.selectList(checkpointWrapper); QueryWrapper standardEquipmentWrapper = new QueryWrapper<>(); + standardEquipmentWrapper.eq("equipment_id", id); List equipmentRelations = standardEquipmentRelationMapper.selectList(standardEquipmentWrapper); List idList = equipmentRelations.stream().map(BizEquipmentStandardEquipmentRelation::getStandardId).collect(Collectors.toList()); - List standardInfoList = standardInfoMapper.selectBatchIds(idList); + List standardInfoList = null; + if (CollectionUtils.isEmpty(idList)) { + standardInfoList = Collections.emptyList(); + } else { + standardInfoList = standardInfoMapper.selectBatchIds(idList); + } DictCodeUtils.convertDictCodeToName(equipmentInfoApproval); response.setEquipmentInfoApproval(equipmentInfoApproval); response.setTechnicalTargetList(targetList); @@ -1063,13 +1071,58 @@ return ReturnUtil.success(true); } String instructionsFile = equipmentInfoApproval.getInstructionsFile(); + List instructions = Optional.ofNullable(instructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); String infoInstructionsFile = bizEquipmentInfo.getInstructionsFile(); - if ((instructionsFile == null || instructionsFile.isEmpty()) ^ (infoInstructionsFile == null || infoInstructionsFile.isEmpty())) { + List infoInstructions = Optional.ofNullable(infoInstructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((instructions == null || instructions.isEmpty()) ^ (infoInstructions == null || infoInstructions.isEmpty())) { return ReturnUtil.success(true); } - if (StringUtils.isNotBlank(instructionsFile) && StringUtils.isNotBlank(infoInstructionsFile) && !Objects.equals(instructionsFile, infoInstructionsFile)) { + if (!CollectionUtils.isEmpty(instructions) && !CollectionUtils.isEmpty(infoInstructions) && instructions.size() == infoInstructions.size()) { + Collections.sort(instructions); + Collections.sort(infoInstructions); + Iterator it1 = instructions.iterator(); + Iterator it2 = infoInstructions.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } + + String technicalFile = equipmentInfoApproval.getTechnicalFile(); + List technicalFiles = Optional.ofNullable(technicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + String infoTechnicalFile = bizEquipmentInfo.getTechnicalFile(); + List infoTechnicalFiles = Optional.ofNullable(infoTechnicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((technicalFiles == null || technicalFiles.isEmpty()) ^ (infoTechnicalFiles == null || infoTechnicalFiles.isEmpty())) { return ReturnUtil.success(true); } + if (!CollectionUtils.isEmpty(technicalFiles) && !CollectionUtils.isEmpty(infoTechnicalFiles) && technicalFiles.size() == infoTechnicalFiles.size()) { + Collections.sort(technicalFiles); + Collections.sort(infoTechnicalFiles); + Iterator it1 = technicalFiles.iterator(); + Iterator it2 = infoTechnicalFiles.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } String traceCompany = equipmentInfoApproval.getTraceCompany(); String infoTraceCompany = bizEquipmentInfo.getTraceCompany(); if ((traceCompany == null || traceCompany.isEmpty()) ^ (infoTraceCompany == null || infoTraceCompany.isEmpty())) { @@ -1094,7 +1147,6 @@ if (StringUtils.isNotBlank(measureValidDate) && StringUtils.isNotBlank(infoMeasureValidDate) && !Objects.equals(measureValidDate, infoMeasureValidDate)) { return ReturnUtil.success(true); } - String meterIdentify = equipmentInfoApproval.getMeterIdentify(); String infoMeterIdentify = bizEquipmentInfo.getMeterIdentify(); if ((meterIdentify == null || meterIdentify.isEmpty()) ^ (infoMeterIdentify == null || infoMeterIdentify.isEmpty())) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java index 43ef9cf..62c08e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java @@ -854,6 +854,8 @@ DictCodeUtils.convertDictCodeToName(standardInfo); DateTime today = DateUtil.parse(DateUtil.today()); if (StringUtils.isNotBlank(standardInfo.getNextReviewDate())) { +// DateTime nextReviewDate = DateUtil.parse(standardInfo.getNextReviewDate()); +// boolean before = nextReviewDate.isBefore(today); boolean after = today.isAfter(DateUtil.parse(standardInfo.getNextReviewDate())); if (after) { standardInfo.setColorMark(1); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8335f29..5e64206 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -167,6 +167,14 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "提醒次数",dataType = "Integer") + @TableField(exist = false) + private Integer remindNums; + + @ApiModelProperty(value = "额外内容",dataType = "String") + @TableField("extra_content") + private String extraContent; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageSourceModule, String messageTitle, String messageTopic, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; this.remindDeptId = remindDeptId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java index 9d0890e..b54c607 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -460,9 +462,15 @@ checkpointWrapper.eq("equipment_no", equipmentNo); List checkpointList = checkpointMapper.selectList(checkpointWrapper); QueryWrapper standardEquipmentWrapper = new QueryWrapper<>(); + standardEquipmentWrapper.eq("equipment_id", id); List equipmentRelations = standardEquipmentRelationMapper.selectList(standardEquipmentWrapper); List idList = equipmentRelations.stream().map(BizEquipmentStandardEquipmentRelation::getStandardId).collect(Collectors.toList()); - List standardInfoList = standardInfoMapper.selectBatchIds(idList); + List standardInfoList = null; + if (CollectionUtils.isEmpty(idList)) { + standardInfoList = Collections.emptyList(); + } else { + standardInfoList = standardInfoMapper.selectBatchIds(idList); + } DictCodeUtils.convertDictCodeToName(equipmentInfoApproval); response.setEquipmentInfoApproval(equipmentInfoApproval); response.setTechnicalTargetList(targetList); @@ -1063,13 +1071,58 @@ return ReturnUtil.success(true); } String instructionsFile = equipmentInfoApproval.getInstructionsFile(); + List instructions = Optional.ofNullable(instructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); String infoInstructionsFile = bizEquipmentInfo.getInstructionsFile(); - if ((instructionsFile == null || instructionsFile.isEmpty()) ^ (infoInstructionsFile == null || infoInstructionsFile.isEmpty())) { + List infoInstructions = Optional.ofNullable(infoInstructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((instructions == null || instructions.isEmpty()) ^ (infoInstructions == null || infoInstructions.isEmpty())) { return ReturnUtil.success(true); } - if (StringUtils.isNotBlank(instructionsFile) && StringUtils.isNotBlank(infoInstructionsFile) && !Objects.equals(instructionsFile, infoInstructionsFile)) { + if (!CollectionUtils.isEmpty(instructions) && !CollectionUtils.isEmpty(infoInstructions) && instructions.size() == infoInstructions.size()) { + Collections.sort(instructions); + Collections.sort(infoInstructions); + Iterator it1 = instructions.iterator(); + Iterator it2 = infoInstructions.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } + + String technicalFile = equipmentInfoApproval.getTechnicalFile(); + List technicalFiles = Optional.ofNullable(technicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + String infoTechnicalFile = bizEquipmentInfo.getTechnicalFile(); + List infoTechnicalFiles = Optional.ofNullable(infoTechnicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((technicalFiles == null || technicalFiles.isEmpty()) ^ (infoTechnicalFiles == null || infoTechnicalFiles.isEmpty())) { return ReturnUtil.success(true); } + if (!CollectionUtils.isEmpty(technicalFiles) && !CollectionUtils.isEmpty(infoTechnicalFiles) && technicalFiles.size() == infoTechnicalFiles.size()) { + Collections.sort(technicalFiles); + Collections.sort(infoTechnicalFiles); + Iterator it1 = technicalFiles.iterator(); + Iterator it2 = infoTechnicalFiles.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } String traceCompany = equipmentInfoApproval.getTraceCompany(); String infoTraceCompany = bizEquipmentInfo.getTraceCompany(); if ((traceCompany == null || traceCompany.isEmpty()) ^ (infoTraceCompany == null || infoTraceCompany.isEmpty())) { @@ -1094,7 +1147,6 @@ if (StringUtils.isNotBlank(measureValidDate) && StringUtils.isNotBlank(infoMeasureValidDate) && !Objects.equals(measureValidDate, infoMeasureValidDate)) { return ReturnUtil.success(true); } - String meterIdentify = equipmentInfoApproval.getMeterIdentify(); String infoMeterIdentify = bizEquipmentInfo.getMeterIdentify(); if ((meterIdentify == null || meterIdentify.isEmpty()) ^ (infoMeterIdentify == null || infoMeterIdentify.isEmpty())) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java index 43ef9cf..62c08e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java @@ -854,6 +854,8 @@ DictCodeUtils.convertDictCodeToName(standardInfo); DateTime today = DateUtil.parse(DateUtil.today()); if (StringUtils.isNotBlank(standardInfo.getNextReviewDate())) { +// DateTime nextReviewDate = DateUtil.parse(standardInfo.getNextReviewDate()); +// boolean before = nextReviewDate.isBefore(today); boolean after = today.isAfter(DateUtil.parse(standardInfo.getNextReviewDate())); if (after) { standardInfo.setColorMark(1); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java index 6fc74f5..6caf6e2 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java @@ -10,6 +10,7 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.BaseApprovalListRequest; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentApprovalListRequest; @@ -17,10 +18,13 @@ import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.resource.GroupCodeDictEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval; @@ -77,6 +81,8 @@ private IBizEquipmentStandardCheckRecordApprovalService checkRecordApprovalService; @Autowired private WorkbenchApprovalMessageMapper approvalMessageMapper; + @Autowired + private WorkbenchRemindMessageMapper remindMessageMapper; @Override public BizWorkbenchEquipmentAmount equipmentAmount(WorkbenchCommonRequest request) { @@ -109,10 +115,7 @@ //年 SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM"); - Map> yearDataMap = equipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), - Collectors.toList() - )); + Map> yearDataMap = equipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), Collectors.toList())); List resultList = new ArrayList<>(); List responseYearList = handleResponseList(monthFormat, yearDataMap, yearLaterDate); BizWorkbenchExpireTrend expireTrendYear = new BizWorkbenchExpireTrend(); @@ -122,12 +125,8 @@ //季度 LocalDate quarterLater = today.plusDays(90); - List quarterEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(quarterLater)) - .collect(Collectors.toList()); - Map> quarterDataMap = quarterEquipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), - Collectors.toList() - )); + List quarterEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(quarterLater)).collect(Collectors.toList()); + Map> quarterDataMap = quarterEquipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), Collectors.toList())); List responseQuarterList = handleResponseList(monthFormat, quarterDataMap, quarterLater); BizWorkbenchExpireTrend expireTrendQuarter = new BizWorkbenchExpireTrend(); expireTrendQuarter.setDimension("季度"); @@ -136,12 +135,8 @@ //月 LocalDate monthLater = today.plusDays(30); - List monthEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(monthLater)) - .collect(Collectors.toList()); - Map> monthLaterDataMap = monthEquipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> equipmentInfo.getMeasureValidDate(), - Collectors.toList() - )); + List monthEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(monthLater)).collect(Collectors.toList()); + Map> monthLaterDataMap = monthEquipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> equipmentInfo.getMeasureValidDate(), Collectors.toList())); List responseMonthList = handleResponseList(new SimpleDateFormat("yyyy-MM-dd"), monthLaterDataMap, monthLater); BizWorkbenchExpireTrend expireTrendMonth = new BizWorkbenchExpireTrend(); expireTrendMonth.setDimension("月"); @@ -285,14 +280,14 @@ } String beanName = actionStatusMap.get(applyFromIdEnum.getCode()).getBizBeanName(); //设备台账与标准装置区分新建、编辑、删除审批,单独处理 - if(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode().equals(applyFromIdEnum.getCode())){ + if (ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode().equals(applyFromIdEnum.getCode())) { //设备台账 if (1 == approvalType) { convertForEquipment(resultList, applyFromIdEnum, 1); } else { convertForEquipment(resultList, applyFromIdEnum, 2); } - } else if(ApplyFromIdEnum.STANDARD_APPROVAL.getCode().equals(applyFromIdEnum.getCode())){ + } else if (ApplyFromIdEnum.STANDARD_APPROVAL.getCode().equals(applyFromIdEnum.getCode())) { //标准装置 if (1 == approvalType) { convertForStandard(resultList, applyFromIdEnum, 1); @@ -337,10 +332,123 @@ WorkbenchApprovalMessage message = new WorkbenchApprovalMessage(); message.setId(updateRequest.getId()); message.setReadStatus(updateRequest.getStatus()); - if(approvalMessageMapper.updateById(message) > 0) return ReturnUtil.success(); + if (approvalMessageMapper.updateById(message) > 0) return ReturnUtil.success(); throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + public ReturnDTO list(WorkbenchCommonRequest request) { + QueryWrapper queryWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); + List orderList = remindMessageMapper.selectList(queryWrapper); + QueryWrapper equipmentWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); + List equipmentList = remindMessageMapper.selectList(equipmentWrapper); + QueryWrapper standardWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + List standardList = remindMessageMapper.selectList(standardWrapper); + QueryWrapper staffWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + List staffList = remindMessageMapper.selectList(staffWrapper); + List messageList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(orderList)) { + WorkbenchRemindMessage order = orderList.get(0); + List orderList1 = orderList.stream().filter(o -> o.getBusinessId().equals(order.getBusinessId()) + && o.getRelationBusinessId().equals(order.getRelationBusinessId())) + .collect(Collectors.toList()); + messageList.addAll(orderList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage equipment = equipmentList.get(0); + List equipmentList1 = equipmentList.stream().filter(e -> e.getBusinessId().equals(equipment.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(equipmentList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage standard = standardList.get(0); + List standardList1 = standardList.stream().filter(s -> s.getBusinessId().equals(standard.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(standardList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage staff = staffList.get(0); + List staffList1 = staffList.stream().filter(s -> s.getBusinessId().equals(staff.getBusinessId()) + && s.getRelationBusinessId().equals(staff.getBusinessId())) + .collect(Collectors.toList()); + messageList.addAll(staffList1); + } + return ReturnUtil.success(messageList); + } + + private List mergeMessageLists(List> lists) { + // 检查输入列表是否为空 + if (lists == null || lists.isEmpty()) { + return new ArrayList<>(); + } + + // 创建一个Map来存储具有相同businessId的元素 + Map map = new HashMap<>(); + + // 对每个列表进行处理 + for (List list : lists) { + if (list != null && !list.isEmpty()) { + // 使用stream来查找具有相同businessId的元素 + list.stream() + .filter(m -> m != null && m.getBusinessId() != null) + .forEach(m -> map.putIfAbsent(m.getBusinessId(), m)); + } + } + + // 将Map的值转换为列表并返回 + return new ArrayList<>(map.values()); + } + + private QueryWrapper getQueryWrapper(WorkbenchCommonRequest request, String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); + queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + queryWrapper.eq("status", "0"); + queryWrapper.eq("message_type", code); + queryWrapper.orderByDesc("create_time"); + return queryWrapper; + } + + @Override + public Page remindListPage(Page page, WorkRemindMessageRequest request) throws Exception { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(request.getMessageTopic()), "message_topic", request.getMessageTopic()); + queryWrapper.eq(StringUtils.isNotBlank(request.getMessageContent()), "message_content", request.getMessageContent()); + if (StringUtils.isNotBlank(request.getStartTime()) && StringUtils.isNotBlank(request.getEndTime())) { + queryWrapper.ge("createTime", request.getStartTime()).le("create_time", request.getEndTime()); + } + queryWrapper.eq("status", request.getStatus()); + queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); + queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + Page messagePage = remindMessageMapper.selectPage(page, queryWrapper); + List records = messagePage.getRecords(); + for (WorkbenchRemindMessage record : records) { + DictCodeUtils.convertDictMultiCodeToName(record); + } + return messagePage; + } + + @Override + public ReturnDTO workDetail(IdDTO idDTO) { + return ReturnUtil.success(remindMessageMapper.selectById(idDTO.getId())); + } + + @Override + public ReturnDTO updateRemindStatus(WorkbenchRemindMessage message) { + message.setStatus(1); + return ReturnUtil.success(remindMessageMapper.updateById(message)); + } + + @NotNull + private QueryWrapper getWorkRemindWrapper(WorkbenchCommonRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("lab_code", request.getLabCode()); + if (!GroupCodeDictEnum.GL.getCode().equals(request.getGroupCode())) { + queryWrapper.eq("group_code", request.getGroupCode()); + } + queryWrapper.eq("status", "0"); + queryWrapper.in("message_type", Arrays.asList(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode(), MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode(), MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode(), MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode())); + return queryWrapper; + } + private void convertForEquipment(List resultList, ApplyFromIdEnum applyFromIdEnum, int approvalType) { BizEquipmentInfoServiceImpl equipmentInfoBean = SpringContextUtil.getBean("bizEquipmentInfoServiceImpl"); EquipmentApprovalListRequest equipmentApprovalListRequest = new EquipmentApprovalListRequest(); @@ -428,10 +536,8 @@ wrapper.eq("notice_id", user.getId()); wrapper.eq(StringUtils.isNotBlank(request.getSourceModule()), "source_module", request.getSourceModule()); wrapper.eq("read_status", readStatus); - wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), - "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); - wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), - "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); List list = approvalMessageMapper.selectList(wrapper); if (!CollectionUtils.isEmpty(list)) { resultList.addAll(list); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8335f29..5e64206 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -167,6 +167,14 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "提醒次数",dataType = "Integer") + @TableField(exist = false) + private Integer remindNums; + + @ApiModelProperty(value = "额外内容",dataType = "String") + @TableField("extra_content") + private String extraContent; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageSourceModule, String messageTitle, String messageTopic, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; this.remindDeptId = remindDeptId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java index 9d0890e..b54c607 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -460,9 +462,15 @@ checkpointWrapper.eq("equipment_no", equipmentNo); List checkpointList = checkpointMapper.selectList(checkpointWrapper); QueryWrapper standardEquipmentWrapper = new QueryWrapper<>(); + standardEquipmentWrapper.eq("equipment_id", id); List equipmentRelations = standardEquipmentRelationMapper.selectList(standardEquipmentWrapper); List idList = equipmentRelations.stream().map(BizEquipmentStandardEquipmentRelation::getStandardId).collect(Collectors.toList()); - List standardInfoList = standardInfoMapper.selectBatchIds(idList); + List standardInfoList = null; + if (CollectionUtils.isEmpty(idList)) { + standardInfoList = Collections.emptyList(); + } else { + standardInfoList = standardInfoMapper.selectBatchIds(idList); + } DictCodeUtils.convertDictCodeToName(equipmentInfoApproval); response.setEquipmentInfoApproval(equipmentInfoApproval); response.setTechnicalTargetList(targetList); @@ -1063,13 +1071,58 @@ return ReturnUtil.success(true); } String instructionsFile = equipmentInfoApproval.getInstructionsFile(); + List instructions = Optional.ofNullable(instructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); String infoInstructionsFile = bizEquipmentInfo.getInstructionsFile(); - if ((instructionsFile == null || instructionsFile.isEmpty()) ^ (infoInstructionsFile == null || infoInstructionsFile.isEmpty())) { + List infoInstructions = Optional.ofNullable(infoInstructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((instructions == null || instructions.isEmpty()) ^ (infoInstructions == null || infoInstructions.isEmpty())) { return ReturnUtil.success(true); } - if (StringUtils.isNotBlank(instructionsFile) && StringUtils.isNotBlank(infoInstructionsFile) && !Objects.equals(instructionsFile, infoInstructionsFile)) { + if (!CollectionUtils.isEmpty(instructions) && !CollectionUtils.isEmpty(infoInstructions) && instructions.size() == infoInstructions.size()) { + Collections.sort(instructions); + Collections.sort(infoInstructions); + Iterator it1 = instructions.iterator(); + Iterator it2 = infoInstructions.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } + + String technicalFile = equipmentInfoApproval.getTechnicalFile(); + List technicalFiles = Optional.ofNullable(technicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + String infoTechnicalFile = bizEquipmentInfo.getTechnicalFile(); + List infoTechnicalFiles = Optional.ofNullable(infoTechnicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((technicalFiles == null || technicalFiles.isEmpty()) ^ (infoTechnicalFiles == null || infoTechnicalFiles.isEmpty())) { return ReturnUtil.success(true); } + if (!CollectionUtils.isEmpty(technicalFiles) && !CollectionUtils.isEmpty(infoTechnicalFiles) && technicalFiles.size() == infoTechnicalFiles.size()) { + Collections.sort(technicalFiles); + Collections.sort(infoTechnicalFiles); + Iterator it1 = technicalFiles.iterator(); + Iterator it2 = infoTechnicalFiles.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } String traceCompany = equipmentInfoApproval.getTraceCompany(); String infoTraceCompany = bizEquipmentInfo.getTraceCompany(); if ((traceCompany == null || traceCompany.isEmpty()) ^ (infoTraceCompany == null || infoTraceCompany.isEmpty())) { @@ -1094,7 +1147,6 @@ if (StringUtils.isNotBlank(measureValidDate) && StringUtils.isNotBlank(infoMeasureValidDate) && !Objects.equals(measureValidDate, infoMeasureValidDate)) { return ReturnUtil.success(true); } - String meterIdentify = equipmentInfoApproval.getMeterIdentify(); String infoMeterIdentify = bizEquipmentInfo.getMeterIdentify(); if ((meterIdentify == null || meterIdentify.isEmpty()) ^ (infoMeterIdentify == null || infoMeterIdentify.isEmpty())) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java index 43ef9cf..62c08e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java @@ -854,6 +854,8 @@ DictCodeUtils.convertDictCodeToName(standardInfo); DateTime today = DateUtil.parse(DateUtil.today()); if (StringUtils.isNotBlank(standardInfo.getNextReviewDate())) { +// DateTime nextReviewDate = DateUtil.parse(standardInfo.getNextReviewDate()); +// boolean before = nextReviewDate.isBefore(today); boolean after = today.isAfter(DateUtil.parse(standardInfo.getNextReviewDate())); if (after) { standardInfo.setColorMark(1); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java index 6fc74f5..6caf6e2 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java @@ -10,6 +10,7 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.BaseApprovalListRequest; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentApprovalListRequest; @@ -17,10 +18,13 @@ import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.resource.GroupCodeDictEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval; @@ -77,6 +81,8 @@ private IBizEquipmentStandardCheckRecordApprovalService checkRecordApprovalService; @Autowired private WorkbenchApprovalMessageMapper approvalMessageMapper; + @Autowired + private WorkbenchRemindMessageMapper remindMessageMapper; @Override public BizWorkbenchEquipmentAmount equipmentAmount(WorkbenchCommonRequest request) { @@ -109,10 +115,7 @@ //年 SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM"); - Map> yearDataMap = equipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), - Collectors.toList() - )); + Map> yearDataMap = equipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), Collectors.toList())); List resultList = new ArrayList<>(); List responseYearList = handleResponseList(monthFormat, yearDataMap, yearLaterDate); BizWorkbenchExpireTrend expireTrendYear = new BizWorkbenchExpireTrend(); @@ -122,12 +125,8 @@ //季度 LocalDate quarterLater = today.plusDays(90); - List quarterEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(quarterLater)) - .collect(Collectors.toList()); - Map> quarterDataMap = quarterEquipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), - Collectors.toList() - )); + List quarterEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(quarterLater)).collect(Collectors.toList()); + Map> quarterDataMap = quarterEquipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), Collectors.toList())); List responseQuarterList = handleResponseList(monthFormat, quarterDataMap, quarterLater); BizWorkbenchExpireTrend expireTrendQuarter = new BizWorkbenchExpireTrend(); expireTrendQuarter.setDimension("季度"); @@ -136,12 +135,8 @@ //月 LocalDate monthLater = today.plusDays(30); - List monthEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(monthLater)) - .collect(Collectors.toList()); - Map> monthLaterDataMap = monthEquipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> equipmentInfo.getMeasureValidDate(), - Collectors.toList() - )); + List monthEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(monthLater)).collect(Collectors.toList()); + Map> monthLaterDataMap = monthEquipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> equipmentInfo.getMeasureValidDate(), Collectors.toList())); List responseMonthList = handleResponseList(new SimpleDateFormat("yyyy-MM-dd"), monthLaterDataMap, monthLater); BizWorkbenchExpireTrend expireTrendMonth = new BizWorkbenchExpireTrend(); expireTrendMonth.setDimension("月"); @@ -285,14 +280,14 @@ } String beanName = actionStatusMap.get(applyFromIdEnum.getCode()).getBizBeanName(); //设备台账与标准装置区分新建、编辑、删除审批,单独处理 - if(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode().equals(applyFromIdEnum.getCode())){ + if (ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode().equals(applyFromIdEnum.getCode())) { //设备台账 if (1 == approvalType) { convertForEquipment(resultList, applyFromIdEnum, 1); } else { convertForEquipment(resultList, applyFromIdEnum, 2); } - } else if(ApplyFromIdEnum.STANDARD_APPROVAL.getCode().equals(applyFromIdEnum.getCode())){ + } else if (ApplyFromIdEnum.STANDARD_APPROVAL.getCode().equals(applyFromIdEnum.getCode())) { //标准装置 if (1 == approvalType) { convertForStandard(resultList, applyFromIdEnum, 1); @@ -337,10 +332,123 @@ WorkbenchApprovalMessage message = new WorkbenchApprovalMessage(); message.setId(updateRequest.getId()); message.setReadStatus(updateRequest.getStatus()); - if(approvalMessageMapper.updateById(message) > 0) return ReturnUtil.success(); + if (approvalMessageMapper.updateById(message) > 0) return ReturnUtil.success(); throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + public ReturnDTO list(WorkbenchCommonRequest request) { + QueryWrapper queryWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); + List orderList = remindMessageMapper.selectList(queryWrapper); + QueryWrapper equipmentWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); + List equipmentList = remindMessageMapper.selectList(equipmentWrapper); + QueryWrapper standardWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + List standardList = remindMessageMapper.selectList(standardWrapper); + QueryWrapper staffWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + List staffList = remindMessageMapper.selectList(staffWrapper); + List messageList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(orderList)) { + WorkbenchRemindMessage order = orderList.get(0); + List orderList1 = orderList.stream().filter(o -> o.getBusinessId().equals(order.getBusinessId()) + && o.getRelationBusinessId().equals(order.getRelationBusinessId())) + .collect(Collectors.toList()); + messageList.addAll(orderList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage equipment = equipmentList.get(0); + List equipmentList1 = equipmentList.stream().filter(e -> e.getBusinessId().equals(equipment.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(equipmentList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage standard = standardList.get(0); + List standardList1 = standardList.stream().filter(s -> s.getBusinessId().equals(standard.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(standardList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage staff = staffList.get(0); + List staffList1 = staffList.stream().filter(s -> s.getBusinessId().equals(staff.getBusinessId()) + && s.getRelationBusinessId().equals(staff.getBusinessId())) + .collect(Collectors.toList()); + messageList.addAll(staffList1); + } + return ReturnUtil.success(messageList); + } + + private List mergeMessageLists(List> lists) { + // 检查输入列表是否为空 + if (lists == null || lists.isEmpty()) { + return new ArrayList<>(); + } + + // 创建一个Map来存储具有相同businessId的元素 + Map map = new HashMap<>(); + + // 对每个列表进行处理 + for (List list : lists) { + if (list != null && !list.isEmpty()) { + // 使用stream来查找具有相同businessId的元素 + list.stream() + .filter(m -> m != null && m.getBusinessId() != null) + .forEach(m -> map.putIfAbsent(m.getBusinessId(), m)); + } + } + + // 将Map的值转换为列表并返回 + return new ArrayList<>(map.values()); + } + + private QueryWrapper getQueryWrapper(WorkbenchCommonRequest request, String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); + queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + queryWrapper.eq("status", "0"); + queryWrapper.eq("message_type", code); + queryWrapper.orderByDesc("create_time"); + return queryWrapper; + } + + @Override + public Page remindListPage(Page page, WorkRemindMessageRequest request) throws Exception { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(request.getMessageTopic()), "message_topic", request.getMessageTopic()); + queryWrapper.eq(StringUtils.isNotBlank(request.getMessageContent()), "message_content", request.getMessageContent()); + if (StringUtils.isNotBlank(request.getStartTime()) && StringUtils.isNotBlank(request.getEndTime())) { + queryWrapper.ge("createTime", request.getStartTime()).le("create_time", request.getEndTime()); + } + queryWrapper.eq("status", request.getStatus()); + queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); + queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + Page messagePage = remindMessageMapper.selectPage(page, queryWrapper); + List records = messagePage.getRecords(); + for (WorkbenchRemindMessage record : records) { + DictCodeUtils.convertDictMultiCodeToName(record); + } + return messagePage; + } + + @Override + public ReturnDTO workDetail(IdDTO idDTO) { + return ReturnUtil.success(remindMessageMapper.selectById(idDTO.getId())); + } + + @Override + public ReturnDTO updateRemindStatus(WorkbenchRemindMessage message) { + message.setStatus(1); + return ReturnUtil.success(remindMessageMapper.updateById(message)); + } + + @NotNull + private QueryWrapper getWorkRemindWrapper(WorkbenchCommonRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("lab_code", request.getLabCode()); + if (!GroupCodeDictEnum.GL.getCode().equals(request.getGroupCode())) { + queryWrapper.eq("group_code", request.getGroupCode()); + } + queryWrapper.eq("status", "0"); + queryWrapper.in("message_type", Arrays.asList(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode(), MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode(), MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode(), MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode())); + return queryWrapper; + } + private void convertForEquipment(List resultList, ApplyFromIdEnum applyFromIdEnum, int approvalType) { BizEquipmentInfoServiceImpl equipmentInfoBean = SpringContextUtil.getBean("bizEquipmentInfoServiceImpl"); EquipmentApprovalListRequest equipmentApprovalListRequest = new EquipmentApprovalListRequest(); @@ -428,10 +536,8 @@ wrapper.eq("notice_id", user.getId()); wrapper.eq(StringUtils.isNotBlank(request.getSourceModule()), "source_module", request.getSourceModule()); wrapper.eq("read_status", readStatus); - wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), - "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); - wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), - "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); List list = approvalMessageMapper.selectList(wrapper); if (!CollectionUtils.isEmpty(list)) { resultList.addAll(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java index 0836cb2..724b2e4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java @@ -1,13 +1,19 @@ package com.casic.missiles.service.listeners.processor; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import com.casic.missiles.constants.TopicConstants; import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.enums.workbench.MessageSourceModuleEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.resource.BizResourceCustomerSuggestFormMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.resource.BizResourceCustomerSuggestForm; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.listeners.NotifyEventPostProcessor; import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; @@ -42,6 +48,18 @@ log.error("委托方意见登记表审批通过后处理失败"); throw new BusinessException(BusinessExceptionEnum.APPROVAL_PROCESSOR_HANDLE_FAILED); } + WorkbenchRemindMessageMapper remindMessageMapper = SpringContextUtil.getBean(WorkbenchRemindMessageMapper.class); + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(suggestForm.getLabCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(id); + message.setBusinessCode(suggestForm.getFormNo()); + message.setMessageTopic(TopicConstants.CONSUMER_SUGGEST_REMIND); + message.setMessageContent(suggestForm.getCustomerName() + "有反馈"); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + remindMessageMapper.insert(message); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java index c3b8662..935559f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; @@ -142,14 +143,14 @@ /*************************************************工作日历***************************************************/ @ApiOperation("工作日历保存") @PostMapping("/calendar/save") - public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar){ + public ReturnDTO calendarSave(@RequestBody BizBoardCalendar boardCalendar) { boardCalendarService.editDate(boardCalendar); return ReturnUtil.success(); } @ApiOperation("工作日历删除") @PostMapping("/calendar/remove") - public ReturnDTO calendarRemove(Long id){ + public ReturnDTO calendarRemove(Long id) { boardCalendarService.removeDate(id); return ReturnUtil.success(); } @@ -157,11 +158,11 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), - @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query", example = "2023-12-31"), }) @ApiOperation("工作日历查询") @GetMapping("/calendar/list") - public ReturnDTO> calendarList(Long userId,String startDate,String endDate){ + public ReturnDTO> calendarList(Long userId, String startDate, String endDate) { return ReturnUtil.success(boardCalendarService.listByUser(userId, startDate, endDate)); } @@ -203,4 +204,30 @@ /*************************************************工作提醒***************************************************/ + + @ApiOperation("工作提醒") + @PostMapping("/work/remind") + public ReturnDTO workRemind(@RequestBody @Valid WorkbenchCommonRequest request) { + return workbenchService.list(request); + } + + @ApiOperation("工作提醒分页列表") + @PostMapping("/work/remindListPage") + public ReturnDTO> toBeReadListPage(@RequestBody WorkRemindMessageRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + Page responsePage = workbenchService.remindListPage(page,request); + return ReturnUtil.success(super.packForBT(responsePage)); + } + + @ApiOperation("工作提醒详情") + @PostMapping("/work/detail") + public ReturnDTO workDetail(@Valid IdDTO idDTO){ + return workbenchService.workDetail(idDTO); + } + + @ApiOperation("工作提醒状态变更(未读->已读)") + @PostMapping("/work/update") + public ReturnDTO updateRemindStatus(@RequestBody WorkbenchRemindMessage message){ + return workbenchService.updateRemindStatus(message); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java index b29aaa0..ef64fec 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageSourceModuleEnum.java @@ -7,7 +7,7 @@ BUSINESS("1", "计量检定业务"), EQUIPMENT("2", "设备与装置"), RESOURCE("3", "资源管理"), - QUALITY("4", "质量管理"), + QUALITY("4", "质量活动"), DATA("5", "数据管理"), SYSTEM("6", "系统管理"), WORKBENCH("7","工作台"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 68df22a..615d4c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -13,7 +13,8 @@ WORKBENCH_REMIND_ORDER("9", "工作台任务单设备超期提醒"), WORKBENCH_REMIND_EQUIPMENT("10", "工作台设备超期提醒"), WORKBENCH_REMIND_STANDARD("11", "工作台标准装置超期提醒"), - WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"); + WORKBENCH_REMIND_STAFF("12", "工作台人员证书超期提醒"), + WORKBENCH_REMIND_CONSUMER("13", "工作台委托方意见登记提醒"); private String code; diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java index cc8ceb0..3551372 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RemindJobHandler.java @@ -12,21 +12,27 @@ import com.casic.missiles.mapper.business.BizBusinessOrderSampleRelationMapper; import com.casic.missiles.mapper.equipment.BizEquipmentInfoMapper; import com.casic.missiles.mapper.equipment.BizEquipmentStandardInfoMapper; +import com.casic.missiles.mapper.quality.BizLabRelDeptMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffInfoMapper; +import com.casic.missiles.mapper.resource.BizResourceStaffVerifierMapper; import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessOrderInfo; import com.casic.missiles.model.business.BizBusinessOrderSampleRelation; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardInfo; +import com.casic.missiles.model.quality.BizLabRelDept; +import com.casic.missiles.model.resource.BizResourceStaffInfo; +import com.casic.missiles.model.resource.BizResourceStaffVerifier; import com.casic.missiles.model.system.SystemRemind; import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.system.SystemRemindService; +import com.casic.missiles.utils.DictCodeUtils; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -58,6 +64,15 @@ @Autowired private BizEquipmentStandardInfoMapper standardInfoMapper; + @Autowired + private BizResourceStaffInfoMapper staffInfoMapper; + + @Autowired + private BizResourceStaffVerifierMapper staffVerifierMapper; + + @Autowired + private BizLabRelDeptMapper labRelDeptMapper; + @XxlJob(value = "orderRemindJobHandler") public ReturnT orderRemindJobHandler() { try { @@ -82,52 +97,10 @@ DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); saveOrderToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================任务单设备到期提醒任务执行完成===================="); -// LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); -// queryWrapper3.le(BizBusinessOrderInfo::getRequireOverTime, hkRemindTime); -// queryWrapper3.like(BizBusinessOrderInfo::getMeasureCompany, "海口"); -// List hkInfos = orderInfoMapper.selectList(queryWrapper3); -// LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getLabCode, LabCodeDictEnum.H.getCode()); -// queryWrapper4.eq(WorkbenchRemindMessage::getStatus, "1"); -// List hkMessList = workbenchRemindMessageMapper.selectList(queryWrapper4); -// for (BizBusinessOrderInfo hkInfo : hkInfos) { -// List relationList = orderSampleRelationMapper.selectSampleListByOrderId(hkInfo.getId()); -// List ids = hkMessList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); -// List relations = relationList.stream().filter(relation -> !ids.contains(relation.getId())).collect(Collectors.toList()); -// String requireOverTime = hkInfo.getRequireOverTime(); -// Integer remindDays = hkRemindConfig.getRemindDays(); -// Integer remindTimes = hkRemindConfig.getRemindTimes(); -// if (isMatchToday(requireOverTime, remindDays,remindTimes)) { -// for (BizBusinessOrderSampleRelation relation : relations) { -// WorkbenchRemindMessage message = new WorkbenchRemindMessage(); -// message.setLabCode(LabCodeDictEnum.H.getCode()); -// if (StringUtils.isNotBlank(relation.getCategory())){ -// if (relation.getCategory().contains("1")){ -// message.setGroupCode(GroupCodeDictEnum.DD.getCode()); -// }else if (relation.getCategory().contains("2")){ -// message.setGroupCode(GroupCodeDictEnum.RL.getCode()); -// }else if (relation.getCategory().contains("0")){ -// message.setGroupCode(GroupCodeDictEnum.WM.getCode()); -// } -// } -// message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); -// message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); -// message.setBusinessId(hkInfo.getId()); -// message.setRelationBusinessId(relation.getId()); -// message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); -// message.setMessageContent(relation.getSampleName() + TopicConstants.ORDER_REMIND_BASE); -// message.setCreateTime(DateUtil.now()); -// message.setStatus(0); -// workbenchRemindMessageMapper.insert(message); -// } -// } -// } return ReturnT.SUCCESS; } catch (Exception e) { log.warn("任务单设备到期提醒任务执行异常", e); - return ReturnT.FAIL; + throw e; } } @@ -142,10 +115,10 @@ } List orderInfos = orderInfoMapper.selectList(queryWrapper1); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + queryWrapper2.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.BUSINESS.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); queryWrapper2.eq(WorkbenchRemindMessage::getLabCode, labCode); - queryWrapper2.eq(WorkbenchRemindMessage::getStatus, "1"); + queryWrapper2.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(queryWrapper2); List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); for (BizBusinessOrderInfo info : orderInfos) { @@ -154,7 +127,8 @@ String requireOverTime = info.getRequireOverTime(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(requireOverTime, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(requireOverTime, remindDays, remindTimes)) { for (BizBusinessOrderSampleRelation relation : relations) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(labCode); @@ -168,7 +142,7 @@ } } message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.BUSINESS.getCode()); message.setBusinessId(info.getId()); message.setRelationBusinessId(relation.getId()); message.setMessageTopic(TopicConstants.ORDER_INFO_REMIND); @@ -223,7 +197,7 @@ return ReturnT.SUCCESS; } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -238,23 +212,26 @@ } List equipmentInfos = equipmentInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentInfo equipmentInfo : equipmentInfos) { if (!ids.contains(equipmentInfo.getId())) { String measureValidDate = equipmentInfo.getMeasureValidDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(equipmentInfo.getLabCode()); + message.setGroupCode(equipmentInfo.getGroupCode()); message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(equipmentInfo.getId()); + message.setBusinessCode(equipmentInfo.getEquipmentNo()); message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); message.setMessageContent(equipmentInfo.getModel() + equipmentInfo.getManufactureNo() + TopicConstants.EQUIPMENT_REMIND_BASE); message.setCreateTime(DateUtil.now()); @@ -291,9 +268,9 @@ saveStandardToWorkBench(hkRemindTime, hkRemindConfig); log.info("====================标准设备到期提醒任务执行完成===================="); return ReturnT.SUCCESS; - }catch (Exception e){ + } catch (Exception e) { log.warn("=======>", e); - return ReturnT.FAIL; + throw e; } } @@ -308,24 +285,28 @@ } List standardInfos = standardInfoMapper.selectList(queryWrapper); LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); - messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.SYSTEM.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.EQUIPMENT.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); - messageWrapper.eq(WorkbenchRemindMessage::getStatus, "1"); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); - List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + List ids = messageList.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); for (BizEquipmentStandardInfo standardInfo : standardInfos) { if (!ids.contains(standardInfo.getId())) { String measureValidDate = standardInfo.getNextReviewDate(); Integer remindDays = remindConfig.getRemindDays(); Integer remindTimes = remindConfig.getRemindTimes(); - if (isMatchToday(measureValidDate, remindDays, remindTimes)) { + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(measureValidDate, remindDays, remindTimes)) { WorkbenchRemindMessage message = new WorkbenchRemindMessage(); message.setLabCode(standardInfo.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.SYSTEM.getCode()); + message.setGroupCode(standardInfo.getGroupCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.EQUIPMENT.getCode()); message.setBusinessId(standardInfo.getId()); - message.setMessageTopic(TopicConstants.EQUIPMENT_INFO_REMIND); + message.setBusinessCode(standardInfo.getStandardNo()); + message.setExtraContent(standardInfo.getStandardName()); + message.setMessageTopic(TopicConstants.STANDARD_INFO_REMIND); message.setMessageContent(standardInfo.getStandardName() + TopicConstants.STANDARD_REMIND_BASE); message.setCreateTime(DateUtil.now()); message.setStatus(0); @@ -334,4 +315,89 @@ } } } + + @XxlJob(value = "staffRemindJobHandler") + public ReturnT staffRemindJobHandler() throws Exception { + try { + log.info("====================标准人员证书到期提醒任务执行===================="); + log.info("================西昌人员证书到期提醒================"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SystemRemind::getTaskType, "3"); + queryWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.X.getCode()); + queryWrapper.last("limit 1"); + SystemRemind xcRemindConfig = systemRemindService.getOne(queryWrapper); + DateTime today = DateUtil.parse(DateUtil.today()); + Integer xcConfigDay = xcRemindConfig.getRemindDays(); + DateTime xcRemindTime = DateUtil.offsetDay(today, xcConfigDay); + saveStaffToWorkBench(xcRemindTime, xcRemindConfig); + + log.info("================海口人员证书到期提醒================"); + LambdaQueryWrapper hkWrapper = new LambdaQueryWrapper<>(); + hkWrapper.eq(SystemRemind::getTaskType, "3"); + hkWrapper.eq(SystemRemind::getLabCode, LabCodeDictEnum.H.getCode()); + hkWrapper.last("limit 1"); + SystemRemind hkRemindConfig = systemRemindService.getOne(hkWrapper); + Integer hkConfigDay = hkRemindConfig.getRemindDays(); + DateTime hkRemindTime = DateUtil.offsetDay(today, hkConfigDay); + saveStaffToWorkBench(hkRemindTime, hkRemindConfig); + log.info("====================人员证书到期提醒任务执行完成===================="); + + return ReturnT.SUCCESS; + } catch (Exception e) { + log.warn("=======>", e); + throw e; + } + } + + public void saveStaffToWorkBench(DateTime remindTime, SystemRemind remindConfig) throws Exception { + String labCode = remindConfig.getLabCode(); + List bizLabRelDepts = labRelDeptMapper.selectList(null); + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + List deptIds = null; + if (labCode.equals(LabCodeDictEnum.X.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.X.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + } else if (labCode.equals(LabCodeDictEnum.H.getCode())) { + deptIds = bizLabRelDepts.stream().filter(dept -> dept.getBizLabCode().equals(LabCodeDictEnum.H.getCode())).map(BizLabRelDept::getDeptId).collect(Collectors.toList()); + } + infoWrapper.in(BizResourceStaffInfo::getDeptId, deptIds); + List staffInfoList = staffInfoMapper.selectList(infoWrapper); + LambdaQueryWrapper messageWrapper = new LambdaQueryWrapper<>(); + messageWrapper.eq(WorkbenchRemindMessage::getMessageSourceModule, MessageSourceModuleEnum.RESOURCE.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getMessageType, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + messageWrapper.eq(WorkbenchRemindMessage::getLabCode, labCode); + messageWrapper.eq(WorkbenchRemindMessage::getStatus, 1); + List messageList = workbenchRemindMessageMapper.selectList(messageWrapper); + List ids = messageList.stream().map(WorkbenchRemindMessage::getRelationBusinessId).collect(Collectors.toList()); + for (BizResourceStaffInfo staffInfo : staffInfoList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(BizResourceStaffVerifier::getEffectiveDate, DateUtil.formatDateTime(remindTime)); + queryWrapper.eq(BizResourceStaffVerifier::getStaffId, staffInfo.getId()); + List verifierList = staffVerifierMapper.selectList(queryWrapper); + BizLabRelDept labRelDept = labRelDeptMapper.selectOne(new LambdaQueryWrapper().eq(BizLabRelDept::getDeptId, staffInfo.getDeptId())); + for (BizResourceStaffVerifier verifier : verifierList) { + DictCodeUtils.convertDictCodeToName(verifier); + if (!ids.contains(verifier.getId())) { + String effectiveDate = verifier.getEffectiveDate(); + Integer remindDays = remindConfig.getRemindDays(); + Integer remindTimes = remindConfig.getRemindTimes(); + remindTimes = remindTimes + 1; + if (remindTimes > 0 && this.isMatchToday(effectiveDate, remindDays, remindTimes)) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(labRelDept.getBizLabCode()); + message.setGroupCode(labRelDept.getGroupNo()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(staffInfo.getId()); + message.setRelationBusinessId(verifier.getId()); + message.setMessageTopic(TopicConstants.STAFF_VERIFIER_REMIND); + message.setMessageContent(staffInfo.getStaffName() + verifier.getCertTypeName() + TopicConstants.EQUIPMENT_REMIND_BASE); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + workbenchRemindMessageMapper.insert(message); + } + } + } + } + } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 2be99b6..f596c2f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -14,4 +14,6 @@ String ORDER_INFO_REMIND = "任务单设备超期提醒"; String EQUIPMENT_INFO_REMIND = "设备到期提醒"; String STANDARD_INFO_REMIND = "标准装置复查提醒"; + String STAFF_VERIFIER_REMIND = "人员证书到期提醒"; + String CONSUMER_SUGGEST_REMIND = "委托方意见登记提醒"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java new file mode 100644 index 0000000..86cbc7d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkRemindMessageRequest.java @@ -0,0 +1,44 @@ +package com.casic.missiles.model.workbench; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: TuT + * @createTime: 2024-05-18 16:13 + * @description: WorkRemindMessageRequest + */ +@Data +@ApiModel +public class WorkRemindMessageRequest { + + @ApiModelProperty(value = "开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "主题", dataType = "Integer") + private String messageTopic; + + @ApiModelProperty(value = "详细信息", dataType = "Integer") + private String messageContent; + + @NotNull(message = "状态不能为空") + @ApiModelProperty(value = "状态(传0为未读列表 传1为已读列表)",dataType = "Integer") + private Integer status; + + @NotBlank(message = "实验室代码不能为空") + @ApiModelProperty(value = "实验室代码",dataType = "String") + private String labCode; + + @ApiModelProperty(value = "组别代码",dataType = "String") + private String groupCode; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8335f29..5e64206 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -167,6 +167,14 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "提醒次数",dataType = "Integer") + @TableField(exist = false) + private Integer remindNums; + + @ApiModelProperty(value = "额外内容",dataType = "String") + @TableField("extra_content") + private String extraContent; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageSourceModule, String messageTitle, String messageTopic, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; this.remindDeptId = remindDeptId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java index 9d0890e..b54c607 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentInfoServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -460,9 +462,15 @@ checkpointWrapper.eq("equipment_no", equipmentNo); List checkpointList = checkpointMapper.selectList(checkpointWrapper); QueryWrapper standardEquipmentWrapper = new QueryWrapper<>(); + standardEquipmentWrapper.eq("equipment_id", id); List equipmentRelations = standardEquipmentRelationMapper.selectList(standardEquipmentWrapper); List idList = equipmentRelations.stream().map(BizEquipmentStandardEquipmentRelation::getStandardId).collect(Collectors.toList()); - List standardInfoList = standardInfoMapper.selectBatchIds(idList); + List standardInfoList = null; + if (CollectionUtils.isEmpty(idList)) { + standardInfoList = Collections.emptyList(); + } else { + standardInfoList = standardInfoMapper.selectBatchIds(idList); + } DictCodeUtils.convertDictCodeToName(equipmentInfoApproval); response.setEquipmentInfoApproval(equipmentInfoApproval); response.setTechnicalTargetList(targetList); @@ -1063,13 +1071,58 @@ return ReturnUtil.success(true); } String instructionsFile = equipmentInfoApproval.getInstructionsFile(); + List instructions = Optional.ofNullable(instructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); String infoInstructionsFile = bizEquipmentInfo.getInstructionsFile(); - if ((instructionsFile == null || instructionsFile.isEmpty()) ^ (infoInstructionsFile == null || infoInstructionsFile.isEmpty())) { + List infoInstructions = Optional.ofNullable(infoInstructionsFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((instructions == null || instructions.isEmpty()) ^ (infoInstructions == null || infoInstructions.isEmpty())) { return ReturnUtil.success(true); } - if (StringUtils.isNotBlank(instructionsFile) && StringUtils.isNotBlank(infoInstructionsFile) && !Objects.equals(instructionsFile, infoInstructionsFile)) { + if (!CollectionUtils.isEmpty(instructions) && !CollectionUtils.isEmpty(infoInstructions) && instructions.size() == infoInstructions.size()) { + Collections.sort(instructions); + Collections.sort(infoInstructions); + Iterator it1 = instructions.iterator(); + Iterator it2 = infoInstructions.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } + + String technicalFile = equipmentInfoApproval.getTechnicalFile(); + List technicalFiles = Optional.ofNullable(technicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + String infoTechnicalFile = bizEquipmentInfo.getTechnicalFile(); + List infoTechnicalFiles = Optional.ofNullable(infoTechnicalFile) + .filter(s -> s.isEmpty() || s == null) + .map(s -> JSON.parseArray(s, String.class)) + .orElse(new ArrayList<>()); + if ((technicalFiles == null || technicalFiles.isEmpty()) ^ (infoTechnicalFiles == null || infoTechnicalFiles.isEmpty())) { return ReturnUtil.success(true); } + if (!CollectionUtils.isEmpty(technicalFiles) && !CollectionUtils.isEmpty(infoTechnicalFiles) && technicalFiles.size() == infoTechnicalFiles.size()) { + Collections.sort(technicalFiles); + Collections.sort(infoTechnicalFiles); + Iterator it1 = technicalFiles.iterator(); + Iterator it2 = infoTechnicalFiles.iterator(); + while (it1.hasNext() && it2.hasNext()) { + String file = it1.next(); + String infoFile = it2.next(); + if (!Objects.equals(file, infoFile)) { + return ReturnUtil.success(true); + } + } + } String traceCompany = equipmentInfoApproval.getTraceCompany(); String infoTraceCompany = bizEquipmentInfo.getTraceCompany(); if ((traceCompany == null || traceCompany.isEmpty()) ^ (infoTraceCompany == null || infoTraceCompany.isEmpty())) { @@ -1094,7 +1147,6 @@ if (StringUtils.isNotBlank(measureValidDate) && StringUtils.isNotBlank(infoMeasureValidDate) && !Objects.equals(measureValidDate, infoMeasureValidDate)) { return ReturnUtil.success(true); } - String meterIdentify = equipmentInfoApproval.getMeterIdentify(); String infoMeterIdentify = bizEquipmentInfo.getMeterIdentify(); if ((meterIdentify == null || meterIdentify.isEmpty()) ^ (infoMeterIdentify == null || infoMeterIdentify.isEmpty())) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java index 43ef9cf..62c08e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardInfoServiceImpl.java @@ -854,6 +854,8 @@ DictCodeUtils.convertDictCodeToName(standardInfo); DateTime today = DateUtil.parse(DateUtil.today()); if (StringUtils.isNotBlank(standardInfo.getNextReviewDate())) { +// DateTime nextReviewDate = DateUtil.parse(standardInfo.getNextReviewDate()); +// boolean before = nextReviewDate.isBefore(today); boolean after = today.isAfter(DateUtil.parse(standardInfo.getNextReviewDate())); if (after) { standardInfo.setColorMark(1); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java index 6fc74f5..6caf6e2 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java @@ -10,6 +10,7 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.BaseApprovalListRequest; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentApprovalListRequest; @@ -17,10 +18,13 @@ import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.resource.GroupCodeDictEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval; import com.casic.missiles.model.equipment.BizEquipmentInfo; import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval; @@ -77,6 +81,8 @@ private IBizEquipmentStandardCheckRecordApprovalService checkRecordApprovalService; @Autowired private WorkbenchApprovalMessageMapper approvalMessageMapper; + @Autowired + private WorkbenchRemindMessageMapper remindMessageMapper; @Override public BizWorkbenchEquipmentAmount equipmentAmount(WorkbenchCommonRequest request) { @@ -109,10 +115,7 @@ //年 SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM"); - Map> yearDataMap = equipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), - Collectors.toList() - )); + Map> yearDataMap = equipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), Collectors.toList())); List resultList = new ArrayList<>(); List responseYearList = handleResponseList(monthFormat, yearDataMap, yearLaterDate); BizWorkbenchExpireTrend expireTrendYear = new BizWorkbenchExpireTrend(); @@ -122,12 +125,8 @@ //季度 LocalDate quarterLater = today.plusDays(90); - List quarterEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(quarterLater)) - .collect(Collectors.toList()); - Map> quarterDataMap = quarterEquipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), - Collectors.toList() - )); + List quarterEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(quarterLater)).collect(Collectors.toList()); + Map> quarterDataMap = quarterEquipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> monthFormat.format(DateUtil.parseDate(equipmentInfo.getMeasureValidDate())), Collectors.toList())); List responseQuarterList = handleResponseList(monthFormat, quarterDataMap, quarterLater); BizWorkbenchExpireTrend expireTrendQuarter = new BizWorkbenchExpireTrend(); expireTrendQuarter.setDimension("季度"); @@ -136,12 +135,8 @@ //月 LocalDate monthLater = today.plusDays(30); - List monthEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(monthLater)) - .collect(Collectors.toList()); - Map> monthLaterDataMap = monthEquipmentInfoList.stream().collect(Collectors.groupingBy( - equipmentInfo -> equipmentInfo.getMeasureValidDate(), - Collectors.toList() - )); + List monthEquipmentInfoList = equipmentInfoList.stream().filter(equipmentInfo -> LocalDate.parse(equipmentInfo.getMeasureValidDate()).isBefore(monthLater)).collect(Collectors.toList()); + Map> monthLaterDataMap = monthEquipmentInfoList.stream().collect(Collectors.groupingBy(equipmentInfo -> equipmentInfo.getMeasureValidDate(), Collectors.toList())); List responseMonthList = handleResponseList(new SimpleDateFormat("yyyy-MM-dd"), monthLaterDataMap, monthLater); BizWorkbenchExpireTrend expireTrendMonth = new BizWorkbenchExpireTrend(); expireTrendMonth.setDimension("月"); @@ -285,14 +280,14 @@ } String beanName = actionStatusMap.get(applyFromIdEnum.getCode()).getBizBeanName(); //设备台账与标准装置区分新建、编辑、删除审批,单独处理 - if(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode().equals(applyFromIdEnum.getCode())){ + if (ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode().equals(applyFromIdEnum.getCode())) { //设备台账 if (1 == approvalType) { convertForEquipment(resultList, applyFromIdEnum, 1); } else { convertForEquipment(resultList, applyFromIdEnum, 2); } - } else if(ApplyFromIdEnum.STANDARD_APPROVAL.getCode().equals(applyFromIdEnum.getCode())){ + } else if (ApplyFromIdEnum.STANDARD_APPROVAL.getCode().equals(applyFromIdEnum.getCode())) { //标准装置 if (1 == approvalType) { convertForStandard(resultList, applyFromIdEnum, 1); @@ -337,10 +332,123 @@ WorkbenchApprovalMessage message = new WorkbenchApprovalMessage(); message.setId(updateRequest.getId()); message.setReadStatus(updateRequest.getStatus()); - if(approvalMessageMapper.updateById(message) > 0) return ReturnUtil.success(); + if (approvalMessageMapper.updateById(message) > 0) return ReturnUtil.success(); throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + public ReturnDTO list(WorkbenchCommonRequest request) { + QueryWrapper queryWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); + List orderList = remindMessageMapper.selectList(queryWrapper); + QueryWrapper equipmentWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); + List equipmentList = remindMessageMapper.selectList(equipmentWrapper); + QueryWrapper standardWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + List standardList = remindMessageMapper.selectList(standardWrapper); + QueryWrapper staffWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + List staffList = remindMessageMapper.selectList(staffWrapper); + List messageList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(orderList)) { + WorkbenchRemindMessage order = orderList.get(0); + List orderList1 = orderList.stream().filter(o -> o.getBusinessId().equals(order.getBusinessId()) + && o.getRelationBusinessId().equals(order.getRelationBusinessId())) + .collect(Collectors.toList()); + messageList.addAll(orderList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage equipment = equipmentList.get(0); + List equipmentList1 = equipmentList.stream().filter(e -> e.getBusinessId().equals(equipment.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(equipmentList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage standard = standardList.get(0); + List standardList1 = standardList.stream().filter(s -> s.getBusinessId().equals(standard.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(standardList1); + } + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage staff = staffList.get(0); + List staffList1 = staffList.stream().filter(s -> s.getBusinessId().equals(staff.getBusinessId()) + && s.getRelationBusinessId().equals(staff.getBusinessId())) + .collect(Collectors.toList()); + messageList.addAll(staffList1); + } + return ReturnUtil.success(messageList); + } + + private List mergeMessageLists(List> lists) { + // 检查输入列表是否为空 + if (lists == null || lists.isEmpty()) { + return new ArrayList<>(); + } + + // 创建一个Map来存储具有相同businessId的元素 + Map map = new HashMap<>(); + + // 对每个列表进行处理 + for (List list : lists) { + if (list != null && !list.isEmpty()) { + // 使用stream来查找具有相同businessId的元素 + list.stream() + .filter(m -> m != null && m.getBusinessId() != null) + .forEach(m -> map.putIfAbsent(m.getBusinessId(), m)); + } + } + + // 将Map的值转换为列表并返回 + return new ArrayList<>(map.values()); + } + + private QueryWrapper getQueryWrapper(WorkbenchCommonRequest request, String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); + queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + queryWrapper.eq("status", "0"); + queryWrapper.eq("message_type", code); + queryWrapper.orderByDesc("create_time"); + return queryWrapper; + } + + @Override + public Page remindListPage(Page page, WorkRemindMessageRequest request) throws Exception { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(request.getMessageTopic()), "message_topic", request.getMessageTopic()); + queryWrapper.eq(StringUtils.isNotBlank(request.getMessageContent()), "message_content", request.getMessageContent()); + if (StringUtils.isNotBlank(request.getStartTime()) && StringUtils.isNotBlank(request.getEndTime())) { + queryWrapper.ge("createTime", request.getStartTime()).le("create_time", request.getEndTime()); + } + queryWrapper.eq("status", request.getStatus()); + queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); + queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + Page messagePage = remindMessageMapper.selectPage(page, queryWrapper); + List records = messagePage.getRecords(); + for (WorkbenchRemindMessage record : records) { + DictCodeUtils.convertDictMultiCodeToName(record); + } + return messagePage; + } + + @Override + public ReturnDTO workDetail(IdDTO idDTO) { + return ReturnUtil.success(remindMessageMapper.selectById(idDTO.getId())); + } + + @Override + public ReturnDTO updateRemindStatus(WorkbenchRemindMessage message) { + message.setStatus(1); + return ReturnUtil.success(remindMessageMapper.updateById(message)); + } + + @NotNull + private QueryWrapper getWorkRemindWrapper(WorkbenchCommonRequest request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("lab_code", request.getLabCode()); + if (!GroupCodeDictEnum.GL.getCode().equals(request.getGroupCode())) { + queryWrapper.eq("group_code", request.getGroupCode()); + } + queryWrapper.eq("status", "0"); + queryWrapper.in("message_type", Arrays.asList(MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode(), MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode(), MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode(), MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode())); + return queryWrapper; + } + private void convertForEquipment(List resultList, ApplyFromIdEnum applyFromIdEnum, int approvalType) { BizEquipmentInfoServiceImpl equipmentInfoBean = SpringContextUtil.getBean("bizEquipmentInfoServiceImpl"); EquipmentApprovalListRequest equipmentApprovalListRequest = new EquipmentApprovalListRequest(); @@ -428,10 +536,8 @@ wrapper.eq("notice_id", user.getId()); wrapper.eq(StringUtils.isNotBlank(request.getSourceModule()), "source_module", request.getSourceModule()); wrapper.eq("read_status", readStatus); - wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), - "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); - wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), - "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); List list = approvalMessageMapper.selectList(wrapper); if (!CollectionUtils.isEmpty(list)) { resultList.addAll(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java index 0836cb2..724b2e4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CustomerSuggestFormEventPostProcessor.java @@ -1,13 +1,19 @@ package com.casic.missiles.service.listeners.processor; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import com.casic.missiles.constants.TopicConstants; import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.enums.workbench.MessageSourceModuleEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.resource.BizResourceCustomerSuggestFormMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.resource.BizResourceCustomerSuggestForm; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.listeners.NotifyEventPostProcessor; import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; @@ -42,6 +48,18 @@ log.error("委托方意见登记表审批通过后处理失败"); throw new BusinessException(BusinessExceptionEnum.APPROVAL_PROCESSOR_HANDLE_FAILED); } + WorkbenchRemindMessageMapper remindMessageMapper = SpringContextUtil.getBean(WorkbenchRemindMessageMapper.class); + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(suggestForm.getLabCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(id); + message.setBusinessCode(suggestForm.getFormNo()); + message.setMessageTopic(TopicConstants.CONSUMER_SUGGEST_REMIND); + message.setMessageContent(suggestForm.getCustomerName() + "有反馈"); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + remindMessageMapper.insert(message); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IBizWorkbenchService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IBizWorkbenchService.java index e54c183..430417d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IBizWorkbenchService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IBizWorkbenchService.java @@ -1,5 +1,7 @@ package com.casic.missiles.service.workbench; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.workbench.WorkbenchCommonRequest; import com.casic.missiles.model.workbench.*; @@ -37,4 +39,11 @@ ReturnDTO updateStatus(ApprovalMessageUpdateRequest updateRequest); + ReturnDTO list(WorkbenchCommonRequest request); + + Page remindListPage(Page page, WorkRemindMessageRequest request) throws Exception; + + ReturnDTO workDetail(IdDTO idDTO); + + ReturnDTO updateRemindStatus(WorkbenchRemindMessage message); }