diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ + - id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ + - id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ + - id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java new file mode 100644 index 0000000..8dac37e --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; + +@Service +@RequiredArgsConstructor +public class SystemDeptServiceImpl implements ISystemDeptService { + + private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + + @Override + public Dept getUserCompany() { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Long deptId = user.getDeptId(); + List parentDeptIds = deptService.getParentListById(deptId); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List deptList = new ArrayList<>(); + parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(top)) { + Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + return company; + } + } + } + return deptService.getById(deptId); + } + + + @Override + public List getAllCompanyList() { + List allDept = deptService.list(null); + Dept top = allDept.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if(ObjectUtil.isEmpty(top)){ + return null; + } + List secondDepts = allDept.stream().filter(i-> top.getId().equals(i.getPid())).collect(Collectors.toList()); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if(!ALL_TYPE.equals(dataScope.getScopeEnums())){ + secondDepts = secondDepts.stream().filter(i->dataScope.getDeptIds().contains(i.getId())).collect(Collectors.toList()); + } + return secondDepts; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java new file mode 100644 index 0000000..8dac37e --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; + +@Service +@RequiredArgsConstructor +public class SystemDeptServiceImpl implements ISystemDeptService { + + private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + + @Override + public Dept getUserCompany() { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Long deptId = user.getDeptId(); + List parentDeptIds = deptService.getParentListById(deptId); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List deptList = new ArrayList<>(); + parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(top)) { + Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + return company; + } + } + } + return deptService.getById(deptId); + } + + + @Override + public List getAllCompanyList() { + List allDept = deptService.list(null); + Dept top = allDept.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if(ObjectUtil.isEmpty(top)){ + return null; + } + List secondDepts = allDept.stream().filter(i-> top.getId().equals(i.getPid())).collect(Collectors.toList()); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if(!ALL_TYPE.equals(dataScope.getScopeEnums())){ + secondDepts = secondDepts.stream().filter(i->dataScope.getDeptIds().contains(i.getId())).collect(Collectors.toList()); + } + return secondDepts; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java index f6ed280..f197fa6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.impl.system; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -15,12 +16,14 @@ import com.casic.missiles.mapper.system.SystemNoticeUserRelationMapper; import com.casic.missiles.model.system.SystemNotice; import com.casic.missiles.model.system.SystemNoticeUserRelation; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.system.ISystemNoticeService; import com.casic.missiles.service.system.ISystemNoticeUserRelationService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -42,6 +45,8 @@ private ISystemNoticeUserRelationService noticeUserRelationService; @Autowired private SystemNoticeUserRelationMapper noticeUserRelationMapper; + @Autowired + private IBoardMessageService boardMessageService; @Override public Page listPage(Page page, NoticeListRequest request) { @@ -103,4 +108,14 @@ } return ReturnUtil.failed(); } + + @Override + @Transactional + public void changeTop(Long id, Integer setTop) { + UpdateWrapper noticeWrapper = new UpdateWrapper<>(); + noticeWrapper.set("set_top",setTop); + noticeWrapper.eq("id",id); + this.update(noticeWrapper); + boardMessageService.changeTop(id,setTop); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java new file mode 100644 index 0000000..8dac37e --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; + +@Service +@RequiredArgsConstructor +public class SystemDeptServiceImpl implements ISystemDeptService { + + private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + + @Override + public Dept getUserCompany() { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Long deptId = user.getDeptId(); + List parentDeptIds = deptService.getParentListById(deptId); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List deptList = new ArrayList<>(); + parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(top)) { + Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + return company; + } + } + } + return deptService.getById(deptId); + } + + + @Override + public List getAllCompanyList() { + List allDept = deptService.list(null); + Dept top = allDept.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if(ObjectUtil.isEmpty(top)){ + return null; + } + List secondDepts = allDept.stream().filter(i-> top.getId().equals(i.getPid())).collect(Collectors.toList()); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if(!ALL_TYPE.equals(dataScope.getScopeEnums())){ + secondDepts = secondDepts.stream().filter(i->dataScope.getDeptIds().contains(i.getId())).collect(Collectors.toList()); + } + return secondDepts; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java index f6ed280..f197fa6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.impl.system; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -15,12 +16,14 @@ import com.casic.missiles.mapper.system.SystemNoticeUserRelationMapper; import com.casic.missiles.model.system.SystemNotice; import com.casic.missiles.model.system.SystemNoticeUserRelation; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.system.ISystemNoticeService; import com.casic.missiles.service.system.ISystemNoticeUserRelationService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -42,6 +45,8 @@ private ISystemNoticeUserRelationService noticeUserRelationService; @Autowired private SystemNoticeUserRelationMapper noticeUserRelationMapper; + @Autowired + private IBoardMessageService boardMessageService; @Override public Page listPage(Page page, NoticeListRequest request) { @@ -103,4 +108,14 @@ } return ReturnUtil.failed(); } + + @Override + @Transactional + public void changeTop(Long id, Integer setTop) { + UpdateWrapper noticeWrapper = new UpdateWrapper<>(); + noticeWrapper.set("set_top",setTop); + noticeWrapper.eq("id",id); + this.update(noticeWrapper); + boardMessageService.changeTop(id,setTop); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java index fecdd52..8f96ac7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java @@ -14,7 +14,13 @@ */ public interface IRemindConfigService extends IService { - Page listScopePage(Page page); + void add(RemindConfig remindConfig); + + void update(RemindConfig remindConfig); + + void remove(Long id); + + Page listScopePage(Page page,String remindName); Integer getRemindTimeByDeptId(Long deptId); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java new file mode 100644 index 0000000..8dac37e --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; + +@Service +@RequiredArgsConstructor +public class SystemDeptServiceImpl implements ISystemDeptService { + + private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + + @Override + public Dept getUserCompany() { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Long deptId = user.getDeptId(); + List parentDeptIds = deptService.getParentListById(deptId); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List deptList = new ArrayList<>(); + parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(top)) { + Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + return company; + } + } + } + return deptService.getById(deptId); + } + + + @Override + public List getAllCompanyList() { + List allDept = deptService.list(null); + Dept top = allDept.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if(ObjectUtil.isEmpty(top)){ + return null; + } + List secondDepts = allDept.stream().filter(i-> top.getId().equals(i.getPid())).collect(Collectors.toList()); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if(!ALL_TYPE.equals(dataScope.getScopeEnums())){ + secondDepts = secondDepts.stream().filter(i->dataScope.getDeptIds().contains(i.getId())).collect(Collectors.toList()); + } + return secondDepts; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java index f6ed280..f197fa6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.impl.system; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -15,12 +16,14 @@ import com.casic.missiles.mapper.system.SystemNoticeUserRelationMapper; import com.casic.missiles.model.system.SystemNotice; import com.casic.missiles.model.system.SystemNoticeUserRelation; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.system.ISystemNoticeService; import com.casic.missiles.service.system.ISystemNoticeUserRelationService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -42,6 +45,8 @@ private ISystemNoticeUserRelationService noticeUserRelationService; @Autowired private SystemNoticeUserRelationMapper noticeUserRelationMapper; + @Autowired + private IBoardMessageService boardMessageService; @Override public Page listPage(Page page, NoticeListRequest request) { @@ -103,4 +108,14 @@ } return ReturnUtil.failed(); } + + @Override + @Transactional + public void changeTop(Long id, Integer setTop) { + UpdateWrapper noticeWrapper = new UpdateWrapper<>(); + noticeWrapper.set("set_top",setTop); + noticeWrapper.eq("id",id); + this.update(noticeWrapper); + boardMessageService.changeTop(id,setTop); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java index fecdd52..8f96ac7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java @@ -14,7 +14,13 @@ */ public interface IRemindConfigService extends IService { - Page listScopePage(Page page); + void add(RemindConfig remindConfig); + + void update(RemindConfig remindConfig); + + void remove(Long id); + + Page listScopePage(Page page,String remindName); Integer getRemindTimeByDeptId(Long deptId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java new file mode 100644 index 0000000..d0084ba --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.service.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface IRemindRelationService extends IService { + + void saveByRemind(Long remindId, List modelIds, List taskIds); + + void removeByRemind(Long remindId); + + List listByRemindIds(List remindIds); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java new file mode 100644 index 0000000..8dac37e --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; + +@Service +@RequiredArgsConstructor +public class SystemDeptServiceImpl implements ISystemDeptService { + + private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + + @Override + public Dept getUserCompany() { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Long deptId = user.getDeptId(); + List parentDeptIds = deptService.getParentListById(deptId); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List deptList = new ArrayList<>(); + parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(top)) { + Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + return company; + } + } + } + return deptService.getById(deptId); + } + + + @Override + public List getAllCompanyList() { + List allDept = deptService.list(null); + Dept top = allDept.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if(ObjectUtil.isEmpty(top)){ + return null; + } + List secondDepts = allDept.stream().filter(i-> top.getId().equals(i.getPid())).collect(Collectors.toList()); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if(!ALL_TYPE.equals(dataScope.getScopeEnums())){ + secondDepts = secondDepts.stream().filter(i->dataScope.getDeptIds().contains(i.getId())).collect(Collectors.toList()); + } + return secondDepts; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java index f6ed280..f197fa6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.impl.system; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -15,12 +16,14 @@ import com.casic.missiles.mapper.system.SystemNoticeUserRelationMapper; import com.casic.missiles.model.system.SystemNotice; import com.casic.missiles.model.system.SystemNoticeUserRelation; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.system.ISystemNoticeService; import com.casic.missiles.service.system.ISystemNoticeUserRelationService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -42,6 +45,8 @@ private ISystemNoticeUserRelationService noticeUserRelationService; @Autowired private SystemNoticeUserRelationMapper noticeUserRelationMapper; + @Autowired + private IBoardMessageService boardMessageService; @Override public Page listPage(Page page, NoticeListRequest request) { @@ -103,4 +108,14 @@ } return ReturnUtil.failed(); } + + @Override + @Transactional + public void changeTop(Long id, Integer setTop) { + UpdateWrapper noticeWrapper = new UpdateWrapper<>(); + noticeWrapper.set("set_top",setTop); + noticeWrapper.eq("id",id); + this.update(noticeWrapper); + boardMessageService.changeTop(id,setTop); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java index fecdd52..8f96ac7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java @@ -14,7 +14,13 @@ */ public interface IRemindConfigService extends IService { - Page listScopePage(Page page); + void add(RemindConfig remindConfig); + + void update(RemindConfig remindConfig); + + void remove(Long id); + + Page listScopePage(Page page,String remindName); Integer getRemindTimeByDeptId(Long deptId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java new file mode 100644 index 0000000..d0084ba --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.service.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface IRemindRelationService extends IService { + + void saveByRemind(Long remindId, List modelIds, List taskIds); + + void removeByRemind(Long remindId); + + List listByRemindIds(List remindIds); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemDeptService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemDeptService.java new file mode 100644 index 0000000..a821d17 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemDeptService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.service.system; + +import com.casic.missiles.modular.system.model.Dept; + +import java.util.List; + +public interface ISystemDeptService { + + Dept getUserCompany(); + + List getAllCompanyList(); +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java index 6a9eb52..ff20714 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/CheckCompletionEnum.java @@ -2,10 +2,19 @@ public interface CheckCompletionEnum { + /** + * 未检定 + */ String UNCHECK = "1"; + /** + * 检定中 + */ String IN_CHECK = "2"; + /** + * 已检完 + */ String CHECKED = "3"; String GO_BACK = "4"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 4cf9e50..d4003c6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,49 +4,22 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), - - EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), - EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), - EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), - EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), - EQUIPMENT_DELAY_APPROVAL("sbyysq", "3", "设备延用申请"), - - - PLAN_APPROVAL("jljhgl","1","计量计划管理"), - INSPECTION_EARLY_APPROVAL("tqsjsq","1","提前送检申请"), - INSPECTION_DELAY_APPROVAL("ycsjsq","1","延迟送检申请"), - - SUBCONTRACTOR_APPROVAL("fbfmlgl","4","分包方名录管理"), - SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","4","分包方评审表"), - + EQUIPMENT_APPROVAL("sbtzgl", "设备台账", "设备台账"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "状态维护", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "状态维护", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "状态维护", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "状态维护", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbyysq", "状态维护", "设备延用申请"), + PLAN_APPROVAL("jljhgl","计量计划","计量计划"), + INSPECTION_EARLY_APPROVAL("tqsjsq","计量计划","提前送检申请"), + INSPECTION_DELAY_APPROVAL("ycsjsq","计量计划","延迟送检申请"), + SUBCONTRACTOR_APPROVAL("fbfmlgl","分包管理","分包方名录"), + SUBCONTRACT_REVIEW_APPROVAL("fbfpsbgl","分包管理","分包方评审表"), /** * 属于计量业务系统 */ - CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "3", "委托方意见登记表审批"), - - - STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), - STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), - STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), - STANDARD_RESUME_APPROVAL("sbglbzzzhfsq", "3", "标准装置恢复申请"), - STANDARD_CHECK_APPROVAL("sbglbzzzfcsq", "3", "标准装置复查申请"), - DEVICE_UNUSED_APPROVAL("sbglsbxzsq", "3", "设备闲置申请"), - DEVICE_SEALED_APPROVAL("sbglsbfcsq", "3", "设备封存申请"), - DEVICE_UNSEALED_APPROVAL("sbglsbqfsq", "3", "设备启封申请"), - DEVICE_SCRAP_APPROVAL("sbglsbbfsq", "3", "设备报废申请"), - DEVICE_HANDLE_APPROVAL("sbglsbczsq", "3", "设备处置申请"), - DEVICE_CONSUMING_APPROVAL("clsblysp", "3", "设备领用申请"), - DEVICE_BORROW_APPROVAL("clsbjysp", "3", "设备借用申请"), - DEVICE_FIX_APPROVAL("sbglsbjxsq", "3", "设备检修申请"), - DEVICE_FIX_ACCEPTANCE("sbglsbjxbyysd", "3", "设备检修保养验收单"), - CERTIFICATE_PRINT_APPROVAL("ywglzsdy", "1", "证书打印通过"), - CERTIFICATE_REPORT_APPROVAL("ywglzsbg", "1", "证书报告通过"), - OUTSOURCER_APPROVAL("ywglfbfzg", "1", "分包方资格"), - OUTSOURCE_PROJECT_APPLY_APPROVAL("ywglfbxmsq", "1", "分包项目申请"), - OUTSOURCE_PROJECT_CHECK_APPROVAL("ywglfbxmys", "1", "分包项目验收"), - AGREEMENT_APPROVAL("cwczht", "2", "合同"), - SITE_EXECUTIVE_INFO_APPROVAL("ywglxcjc", "1", "现场检测审批"); + CUSTOMER_SUGGEST_FORM_APPROVAL("zyglwtfyjdjb", "计量业务", "委托方意见登记表审批"), + ; private String code; private String source;//MessageSourceModuleEnum类code,工作台审批消息提醒接口使用 diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java index b2557dd..281c3db 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.board; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,11 @@ */ public interface BoardMessageMapper extends BaseMapper { + List checkMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew); + + List noticeMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userCompanyId") Long userCompanyId, @Param("userCompanyName") String userCompanyName); + + List remindMessagePage(@Param("page") Page page, @Param("ew") QueryWrapper ew, + @Param("userId") Long userId, @Param("userName") String userName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java index 5558ef4..a4a501d 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsList; -import com.casic.missiles.dto.board.EquipmentToCheckAggr; +import com.casic.missiles.dto.board.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,16 +16,23 @@ @Param("deptName") String deptName, @Param("checkedStatus") List checkedStatus); - List toCheckEquipmentPage(@Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + List toCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + EquipmentToCheckAggr toCheckStatistics(@Param("ew") QueryWrapper queryWrapper); - List inCheckEquipmentPage(@Param("page")Page page, - @Param("ew") QueryWrapper queryWrapper); + List inCheckEquipmentList(@Param("ew") QueryWrapper queryWrapper); - EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, - @Param("unCheckStatus")List unCheckStatus, - @Param("inCheckStatus")List inCheckStatus, - @Param("checkedStatus")List checkedStatus); + EquipmentInCheckAggr inCheckStatistics(@Param("ew") QueryWrapper queryWrapper, + @Param("unCheckStatus") List unCheckStatus, + @Param("inCheckStatus") List inCheckStatus, + @Param("checkedStatus") List checkedStatus); + + List shouldCheckAggr(@Param("deptIds") List deptIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List haveCheckAggr(@Param("deptIds") List deptIds, + @Param("checkedStatus") List checkedStatus, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index ca16614..5ac83f6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -5,6 +5,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.equipment.EquipmentCertificateDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; +import com.casic.missiles.dto.equipment.EquipmentRemindList; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -35,6 +36,10 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + List selectRemindListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectRemindList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java index 6417028..173660b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindConfigMapper.java @@ -21,5 +21,5 @@ List listScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page page, - @Param("ew") QueryWrapper queryWrapper); + @Param("remindName") String remindName); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java new file mode 100644 index 0000000..a78281e --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/system/RemindRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface RemindRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml index db62c06..306172d 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -16,11 +16,251 @@ +
- id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time + id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml index 402610a..278476b 100644 --- a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -22,13 +22,13 @@ e.certificate_valid AS certificateValid, r.sample_status AS latestSampleStatus, IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp - WHERE tmp.sample_id = e.id - AND YEAR ( tmp.update_time ) = YEAR (NOW()) - AND tmp.sample_status IN - #{item} - ), - 1, - 0 + WHERE tmp.sample_id = e.id + AND YEAR ( tmp.update_time ) = YEAR (NOW()) + AND tmp.sample_status IN + #{item} + ), + 1, + 0 ) AS yearChecked FROM eqpt_equipment_info e @@ -81,10 +81,12 @@ - + select * from + ( + WITH latest_relation AS ( SELECT * - FROM biz_business_order_sample_relation a + FROM biz_business_order_sample_relation a WHERE id = ( SELECT max( id ) FROM biz_business_order_sample_relation b @@ -109,10 +111,10 @@ ${ew.sqlSegment} - + )A - WITH latest_relation AS ( SELECT * FROM biz_business_order_sample_relation a @@ -147,4 +149,66 @@ + + + diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml index e9d9f55..754fb3f 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentInfoMapper.xml @@ -5,13 +5,13 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + id, equipment_no as equipmentNo, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no as manufactureNo, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid as certificateValid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + with remind_config_info as ( + select + c.remind_time as remind_time, + r.task_id as task_id, + r.model_id as model_id, + e.id as equipment_id + from eqpt_remind_config c + left join eqpt_remind_relation r on c.id = r.remind_id + left join eqpt_equipment_task_relation t on r.task_id = t.task_id + left join eqpt_equipment_info e on (r.model_id = e.model_id or t.equipment_id = e.id) + where e.id is not null + ), + eqpt_remind as ( + select equipment_id,min(remind_time) as remind_time + from remind_config_info + group by equipment_id + ), + eqpt_remind_all as ( + select + e.id as equipment_id, + IFNULL(m.remind_time,0) as remind_time + from eqpt_equipment_info e + left join eqpt_remind m on e.id = m.equipment_id + ), + task_ext as ( + select id,task_name,CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),"~",DATE_FORMAT(end_time,'%Y-%m-%d')) as time_ext,start_time,end_time + from eqpt_equipment_task_info + ), + eqpt_ext as ( + select e.* , + DATE_SUB(e.certificate_valid,INTERVAL a.remind_time DAY) AS remind_valid, + GROUP_CONCAT(t.task_name) as taskNames, + GROUP_CONCAT(t.time_ext) as taskTimes, + GROUP_CONCAT(t.id) as taskIds, + min(t.start_time) as task_start_time, + max(t.end_time) as task_end_time + from eqpt_equipment_info e + left join eqpt_remind_all a on e.id = a.equipment_id + left join eqpt_equipment_task_relation r on e.id = r.equipment_id + left join task_ext t on r.task_id = t.id + where e.certificate_valid is not null + group by e.id,e.certificate_valid,a.remind_time + ) + + select * from eqpt_ext + + + ${ew.sqlSegment} + + + ORDER BY remind_valid asc + + + + + + select c.id as id, diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml index 7cde255..3925929 100644 --- a/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindConfigMapper.xml @@ -17,17 +17,35 @@ - id, remind_name, remind_time, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name + id, remind_name, remind_time,remind_type, create_time, update_time, create_user_id, create_user_name, create_dept_id, create_dept_name - + SELECT + a.id as id, + a.remind_name as remindName, + a.remind_time as remindTime, + a.remind_type as remindType, + a.create_time as createTime, + a.update_time as updateTime, + a.create_user_id as createUserId, + a.create_user_name as createUserName, + a.create_dept_id as createDeptId, + a.create_dept_name as createDeptName, + a.equipment_ext as equipmentExt, + a.task_ext as taskExt, + GROUP_CONCAT(DISTINCT c.equipment_name) as equipmentNames, + GROUP_CONCAT(DISTINCT d.task_name) as taskNames + FROM + eqpt_remind_config a + LEFT JOIN eqpt_remind_relation b ON a.id = b.remind_id + LEFT JOIN eqpt_equipment_model_info c ON ( b.model_id = c.id AND a.remind_type = '1' ) + LEFT JOIN eqpt_equipment_task_info d ON ( b.task_id = d.id AND a.remind_type = '2' ) + GROUP BY a.id + + HAVING a.remind_name like concat('%',#{remindName},'%') + + diff --git a/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml new file mode 100644 index 0000000..41b65b3 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/system/RemindRelationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, remind_id, model_id, task_id, create_time, update_time + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java index 9b6df1a..8c00bff 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -11,20 +11,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.board.EquipmentBoardList; -import com.casic.missiles.dto.board.EquipmentInCheckAggr; -import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.*; import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.board.IBoardCalendarService; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.board.INoticeBoardService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.BorderStyle; @@ -44,11 +47,13 @@ @RequestMapping("/board") @RequiredArgsConstructor @Slf4j -public class NoticeBoardController { +public class NoticeBoardController extends BaseController { private final INoticeBoardService noticeBoardService; private final IBoardCalendarService boardCalendarService; + private final IBoardMessageService boardMessageService; + @ApiOperation("业务看板列表") @GetMapping("bizList") @ResponseBody @@ -118,34 +123,43 @@ } } - @ApiOperation("检定详情汇总") - @GetMapping("/overview/equipmentSummary") - @ResponseBody - public ReturnDTO equipmentSummary(){ - return ReturnUtil.success(noticeBoardService.equipmentSummary()); - } + @ApiOperation("设备类型统计") @GetMapping("/overview/equipmentName") @ResponseBody - public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds)); + public ReturnDTO equipmentName(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("equipment_name",deptIds,null)); } - @ApiOperation("计量专业分类统计") + @ApiOperation("设备分类统计") @GetMapping("/overview/equipmentCategory") @ResponseBody - public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds,null)); } - @ApiOperation("计量计划完成率") - @GetMapping("/overview/planFinishRate") + @ApiOperation("设备状态统计") + @GetMapping("/overview/equipmentUsageStatus") @ResponseBody - public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ - return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + public ReturnDTO equipmentUsageStatus(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("usage_status",deptIds, MeterDictCode.EQUIPMENT_USAGE_STATUS)); } +// @ApiOperation("检定详情汇总") +// @GetMapping("/overview/equipmentSummary") +// @ResponseBody +// public ReturnDTO equipmentSummary(){ +// return ReturnUtil.success(noticeBoardService.equipmentSummary()); +// } +// +// @ApiOperation("计量计划完成率") +// @GetMapping("/overview/planFinishRate") +// @ResponseBody +// public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ +// return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); +// } + @ApiOperation("工作日历保存") @PostMapping("/calendar/save") @ResponseBody @@ -154,6 +168,14 @@ return ReturnUtil.success(); } + @ApiOperation("工作日历删除") + @PostMapping("/calendar/remove") + @ResponseBody + public ReturnDTO calendarRemove(Long id){ + boardCalendarService.removeDate(id); + return ReturnUtil.success(); + } + @ApiImplicitParams({ @ApiImplicitParam(name = "companyId", value = "用户单位id", dataType = "Long", paramType = "query", example = "0", required = true), @ApiImplicitParam(name = "startDate", value = "开始日期", dataType = "String", paramType = "query", example = "2023-01-01"), @@ -166,36 +188,86 @@ return ReturnUtil.success(boardCalendarService.listByCompany(companyId, startDate, endDate)); } - @ApiOperation("在检设备列表") - @GetMapping("/equipment/inCheckPage") - public ReturnDTO> inCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// @ApiOperation("在检设备列表") +// @GetMapping("/equipment/inCheckPage") +// public ReturnDTO> inCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inCheckEquipmentPage(page)); +// } +// +// @ApiOperation("在检设备统计") +// @GetMapping("/equipment/inCheckAggr") +// public ReturnDTO inCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.inCheckStatistics()); +// } + + @ApiOperation("在检设备信息") + @GetMapping("/equipment/inCheckInfo") + public ReturnDTO inCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inCheckMultiStatistic(deptIds)); } - @ApiOperation("在检设备统计") - @GetMapping("/equipment/inCheckAggr") - public ReturnDTO inCheckAggr(){ - return ReturnUtil.success(noticeBoardService.inCheckStatistics()); + +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckPage") +// public ReturnDTO> toCheckPage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); +// } +// +// @ApiOperation("待检设备列表") +// @GetMapping("/equipment/toCheckAggr") +// public ReturnDTO> toCheckAggr(){ +// return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// } + + @ApiOperation("待检设备信息") + @GetMapping("/equipment/toCheckInfo") + public ReturnDTO toCheckInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.toCheckMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckPage") - public ReturnDTO> toCheckPage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.toCheckEquipmentPage(page)); + @ApiOperation("在用设备信息") + @GetMapping("/equipment/inUseInfo") + public ReturnDTO inUseInfo(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.inUseMultiStatistic(deptIds)); } - @ApiOperation("待检设备列表") - @GetMapping("/equipment/toCheckAggr") - public ReturnDTO> toCheckAggr(){ - return ReturnUtil.success(noticeBoardService.toCheckStatistics()); +// @ApiOperation("在用设备列表") +// @GetMapping("/equipment/inUsePage") +// public ReturnDTO> inUsePage(){ +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(noticeBoardService.inUseEquipmentPage(page)); +// } + + @ApiOperation("检定总数统计") + @GetMapping("/check/summary") + public ReturnDTO checkSummary(){ + return ReturnUtil.success(noticeBoardService.checkSummary()); } - @ApiOperation("在用设备列表") - @GetMapping("/equipment/inUsePage") - public ReturnDTO> inUsePage(){ - Page page = PageFactory.defaultPage(); - return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + @ApiOperation("检定趋势") + @GetMapping("/check/trend") + public ReturnDTO checkTrend(){ + return ReturnUtil.success(noticeBoardService.checkStatisticsList()); + } + + @ApiOperation("首页看板消息") + @PostMapping("/message/listPage") + public ReturnDTO> messagePage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.listPage(queryForm))); + } + + @ApiOperation("审批提醒消息(待处理)") + @PostMapping("/message/toBeApprovedListPage") + public ReturnDTO> toBeApprovedListPage(@RequestBody BoardMessageQueryForm queryForm){ + return ReturnUtil.success(super.packForBT(boardMessageService.toBeApprovedListPage(queryForm))); + } + + @ApiOperation("消息已读") + @PostMapping("/message/setRead") + public ReturnDTO messageRead(@RequestBody BoardMessage boardMessage){ + boardMessageService.setMessageRead(boardMessage); + return ReturnUtil.success(); } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java index b32a12f..b78aec0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; @@ -90,8 +91,8 @@ @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody - public ReturnDTO> remindListPage(@RequestBody EquipmentQueryForm queryForm) { - Page page = PageFactory.defaultPage(); + public ReturnDTO> EquipmentRemindQueryForm(@RequestBody EquipmentRemindQueryForm queryForm) { + Page page = PageFactory.defaultPage(); page = equipmentInfoService.remindListPage(page, queryForm); return ReturnUtil.success(super.packForBT(page)); } @@ -99,9 +100,16 @@ @ApiOperation("到期提醒列表导出") @PostMapping("/remind/listExport") @ResponseBody - public void remindListExport(@RequestBody EquipmentQueryForm queryForm) throws IOException { - List list = equipmentInfoService.remindList(queryForm); - super.exportExcel(EquipmentInfo.class,list,""); + public void remindListExport(@RequestBody EquipmentRemindQueryForm queryForm) throws IOException { + List list = equipmentInfoService.remindList(queryForm); + super.exportExcel(EquipmentRemindList.class,list,""); + } + + @ApiOperation(value = "设备到期趋势",notes = "type传“month”/“year”") + @GetMapping("/remind/trend") + @ResponseBody + public ReturnDTO> expireTrend(String type){ + return ReturnUtil.success(equipmentInfoService.expireTrend(type)); } @ApiOperation("证书管理分页列表") diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java index 7f04e81..20f12f0 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/RemindConfigController.java @@ -34,15 +34,29 @@ @ApiOperation("编辑") @PostMapping("update") public ReturnDTO update(@RequestBody RemindConfig remindConfig){ - remindConfigService.updateById(remindConfig); + remindConfigService.update(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("新建") + @PostMapping("add") + public ReturnDTO add(@RequestBody RemindConfig remindConfig){ + remindConfigService.add(remindConfig); + return ReturnUtil.success(); + } + + @ApiOperation("删除") + @PostMapping("remove") + public ReturnDTO remove(Long id){ + remindConfigService.remove(id); return ReturnUtil.success(); } @ApiOperation("分页列表") @GetMapping("listPage") - public ReturnDTO> listPage(){ + public ReturnDTO> listPage(String remindName){ Page page = PageFactory.defaultPage(); - page = remindConfigService.listScopePage(page); + page = remindConfigService.listScopePage(page,remindName); return ReturnUtil.success(super.packForBT(page)); } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java index 8860646..50173ef 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemDeptController.java @@ -4,10 +4,12 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -18,6 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; @Api(tags = "系统通用接口") @RestController @@ -25,26 +30,17 @@ @RequiredArgsConstructor public class SystemDeptController { - private final AbstractDeptService deptService; - private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; @ApiOperation("获取所在单位") @GetMapping("/company") public ReturnDTO getCompanyId() { - AuthUser user = permissionContext.getAuthService().getLoginUser(); - Long deptId = user.getDeptId(); - List parentDeptIds = deptService.getParentListById(deptId); - if (CollUtil.isNotEmpty(parentDeptIds)) { - List deptList = new ArrayList<>(); - parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); - Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(top)) { - Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(company)) { - return ReturnUtil.success(company); - } - } - } - return ReturnUtil.success(deptService.getById(deptId)); + return ReturnUtil.success(systemDeptService.getUserCompany()); + } + + @ApiOperation("获取所在单位列表") + @GetMapping("/companyList") + public ReturnDTO> companyList() { + return ReturnUtil.success(systemDeptService.getAllCompanyList()); } } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index 972ddde..6f0359b 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -122,7 +122,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_model_info,eqpt_equipment_model_technical_target,eqpt_equipment_task_info,eqpt_equipment_task_relation + table-name: eqpt_remind_relation prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java new file mode 100644 index 0000000..9f4d08d --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/BoardMessageQueryForm.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class BoardMessageQueryForm { + + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") + private String messageModule; + + @ApiModelProperty("消息类型") + private String messageType; + + @ApiModelProperty("读取状态(0未读; 1已读)") + private String readStatus; + + @ApiModelProperty("来源模块") + private String sourceModule; + + @ApiModelProperty("开始时间") + private String messageStartTime; + + @ApiModelProperty("结束时间") + private String messageEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java new file mode 100644 index 0000000..7970f44 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsDTO { + + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ApiModelProperty("年度已检数量") + private Long yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java new file mode 100644 index 0000000..0d76349 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/CheckStatisticsList.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.board; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +public class CheckStatisticsList { + + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("应检数量") + private Integer shouldCheck; + + @ApiModelProperty("已检数量") + private Integer haveChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java index 991ec9b..304cf0f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -29,6 +29,8 @@ @ApiModelProperty("设备名称") private String equipmentName; + private String model; + /** * 所在单位id */ @@ -53,6 +55,9 @@ @ApiModelProperty("负责人") private String directorName; + private String category; + private String meterIdentify; + /** * 证书有效期 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java new file mode 100644 index 0000000..0d7102c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentMultiAggr.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class EquipmentMultiAggr { + + @ApiModelProperty("设备态势[在检设备、待检设备]") + private List statistic; + + @ApiModelProperty("受检单位排行榜[在检设备、待检设备]") + private List companyAggrList; + + @ApiModelProperty("负责人排行榜[在检设备、待检设备]") + private List dircetorAggrList; + + @ApiModelProperty("按单位统计列表[在检设备、待检设备]") + private List companyList; + + @ApiModelProperty("按部门统计列表[在检设备、待检设备]") + private List deptList; + + @ApiModelProperty("在用设备计量标识[在用设备]") + private List meterAggrList; + + @ApiModelProperty("在用设备类型[在用设备]") + private List nameAggrList; + @Getter + @Setter + @NoArgsConstructor + public static class EquipmentSimpleList{ + private String equipmentName; + private String model; + private String companyName; + private String deptName; + private Integer count; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java index 2b1df6c..f6448c6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentInfoForm.java @@ -1,8 +1,7 @@ package com.casic.missiles.dto.equipment; -import com.casic.missiles.model.equipment.EquipmentAttachment; -import com.casic.missiles.model.equipment.EquipmentInfo; -import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.model.equipment.*; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -13,7 +12,13 @@ @Setter public class EquipmentInfoForm extends EquipmentInfo{ + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + @ApiModelProperty("参试任务") + @TableField(exist = false) + private List taskInfos; @ApiModelProperty("技术指标列表") private List technicalTargetList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java index 040a368..03fc0f1 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentQueryForm.java @@ -1,5 +1,9 @@ package com.casic.missiles.dto.equipment; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.dto.BaseQueryForm; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -20,22 +24,55 @@ @ApiModelProperty("设备类型(1受检设备;2特种设备)") private String equipmentType; + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("所在单位") + private Long companyId; @ApiModelProperty("使用部门") private List deptIds; @ApiModelProperty("使用岗位") private String usePosition; + @ApiModelProperty("负责人") + private String directorName; + @ApiModelProperty("使用状态") private String usageStatus; + @ApiModelProperty("在用信息") + private String useSign; + + @ApiModelProperty("安装位置") + private String installLocation; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("证书有效期开始时间") private String certificateValidStart; @ApiModelProperty("证书有效期结束时间") private String certificateValidEnd; - @ApiModelProperty("使用状态列表") + @ApiModelProperty("检定机构") + private String checkOrganization; + + @ApiModelProperty("计量标识") + private String meterIdentify; + + @ApiModelProperty("检定日期开始") + private String checkDateStart; + + @ApiModelProperty("检定日期结束") + private String checkDateEnd; + + @ApiModelProperty("使用状态列表[状态维护选择设备时用]") private List usageStatusList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java new file mode 100644 index 0000000..43016e2 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindList.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.model.equipment.EquipmentInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ExcelIgnoreUnannotated +@ColumnWidth(35) +@HeadRowHeight(20) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +public class EquipmentRemindList extends EquipmentInfo { + + @ApiModelProperty("参试任务") + @ExcelProperty("参试任务") + private String taskNames; + + @ApiModelProperty("参试任务时间") + @ExcelProperty("参试任务时间") + private String taskTimes; + + @ApiModelProperty("使用状态(字典code)") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("计量标识") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) + private String meterIdentify; + + @ApiModelProperty("计量标识名称") + private String meterIdentifyName; + + @ApiModelProperty("备注") + @ExcelIgnore + private String remark; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java new file mode 100644 index 0000000..663cd38 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentRemindQueryForm.java @@ -0,0 +1,55 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.dto.BaseQueryForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class EquipmentRemindQueryForm extends BaseQueryForm { + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("规格型号") + private String model; + + @ApiModelProperty("出厂编号") + private String manufactureNo; + + @ApiModelProperty("设备类型(1受检设备;2特种设备)") + private String equipmentType; + + @ApiModelProperty("使用部门") + private List deptIds; + + @ApiModelProperty("使用岗位") + private String usePosition; + + @ApiModelProperty("使用状态") + private String usageStatus; + + @ApiModelProperty("证书有效期开始时间") + private String certificateValidStart; + + @ApiModelProperty("证书有效期结束时间") + private String certificateValidEnd; + + @ApiModelProperty("参试任务id") + private Long taskId; + + @ApiModelProperty("参试任务开始时间") + private String taskStartTime; + + @ApiModelProperty("参试任务结束时间") + private String tastEndTime; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java index 79b030b..e62e842 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -14,4 +14,5 @@ private Integer decisionItem; //任务创建时间,工作台审批提醒使用 private String createTime; + private String processId; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java index 6d7f71c..401957a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -6,7 +6,9 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -29,73 +31,92 @@ * 主键 */ @TableId("id") - private Integer id; + private Long id; /** * 消息模块(检定通知\通知公告\工作提醒) */ + @ApiModelProperty("消息模块(检定通知/通知公告/工作提醒)") @TableField("message_module") private String messageModule; /** * 消息类型 */ + @ApiModelProperty("消息类型") @TableField("message_type") private String messageType; /** * 主题 */ + @ApiModelProperty("主题") @TableField("message_topic") private String messageTopic; /** * 来源模块 */ + @ApiModelProperty("来源模块") @TableField("source_module") private String sourceModule; /** * 读取状态(0未读; 1已读) */ + @ApiModelProperty("读取状态(0未读; 1已读)") @TableField("read_status") private String readStatus; /** * 通知用户id */ + @ApiModelProperty("通知用户id") @TableField("notify_user_id") - private Integer notifyUserId; + private Long notifyUserId; /** * 通知部门id */ + @ApiModelProperty("通知部门id") @TableField("notify_dept_id") - private Integer notifyDeptId; + private Long notifyDeptId; /** * 业务主键id */ + @ApiModelProperty("业务主键id") @TableField("biz_id") - private Integer bizId; + private Long bizId; /** * 消息时间 */ + @ApiModelProperty("消息时间") @TableField("message_time") - private LocalDateTime messageTime; + private Date messageTime; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + @ApiModelProperty("是否置顶") + @TableField("set_top") + private Integer setTop; + + private String formId; + private String processId; + private String taskId; + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java index f851ecc..21294cf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfo.java @@ -335,13 +335,7 @@ @TableField("help_instruction") private String helpInstruction; - @ApiModelProperty("组别信息") - @TableField(exist = false) - private List groupInfos; - @ApiModelProperty("参试任务") - @TableField(exist = false) - private List taskInfos; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java index bd88ba4..becf9b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTaskInfo.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + import lombok.Getter; import lombok.Setter; @@ -39,13 +41,13 @@ * 开始时间 */ @TableField("start_time") - private LocalDateTime startTime; + private Date startTime; /** * 结束时间 */ @TableField("end_time") - private LocalDateTime endTime; + private Date endTime; /** * 备注 @@ -69,13 +71,13 @@ * 创建时间 */ @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java index 60ed78c..f44d928 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindConfig.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -47,6 +48,10 @@ @TableField("remind_time") private String remindTime; + @ApiModelProperty("提醒类型(1设备;2任务)") + @TableField("remind_type") + private String remindType; + /** * 创建时间 */ @@ -89,5 +94,28 @@ @TableField("create_dept_name") private String createDeptName; + @ApiModelProperty("关联设备规格id列表") + @TableField(exist = false) + private List modelIds; + @ApiModelProperty("关联参试任务id列表") + @TableField(exist = false) + private List taskIds; + + + @ApiModelProperty("提醒设备名称") + @TableField(exist = false) + private String equipmentNames; + + @ApiModelProperty("任务名称") + @TableField(exist = false) + private String taskNames; + + @ApiModelProperty("设备名称辅助字段") + @TableField("equipment_ext") + private String equipmentExt; + + @ApiModelProperty("参试任务辅助字段") + @TableField("task_ext") + private String taskExt; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java new file mode 100644 index 0000000..37e4747 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/RemindRelation.java @@ -0,0 +1,66 @@ +package com.casic.missiles.model.system; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Getter +@Setter +@TableName("eqpt_remind_relation") +public class RemindRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 到期提醒id + */ + @TableField("remind_id") + private Long remindId; + + /** + * 设备规格id + */ + @TableField("model_id") + private Long modelId; + + /** + * 任务id + */ + @TableField("task_id") + private Long taskId; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index 2564be7..df51080 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java @@ -117,4 +117,12 @@ @TableField(exist = false) private Long read; + @ApiModelProperty("是否同步到受检系统(1是;0否)") + @TableField("sync_eqpt") + private Integer syncEqpt; + + @ApiModelProperty("是否置顶(1是;0否)") + @TableField("set_top") + private Integer setTop; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java index a433646..aa48d65 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -19,4 +19,6 @@ List listByCompany(Long companyId,String startDate,String endDate); + void removeDate(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java index b5063a3..acf1a0b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -1,7 +1,10 @@ package com.casic.missiles.service.board; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.BoardMessageQueryForm; import com.casic.missiles.model.board.BoardMessage; import com.baomidou.mybatisplus.extension.service.IService; +import liquibase.pro.packaged.S; /** *

@@ -13,4 +16,11 @@ */ public interface IBoardMessageService extends IService { + Page listPage(BoardMessageQueryForm queryForm); + + void setMessageRead(BoardMessage boardMessage); + + void changeTop(Long noticeId,Integer setTop); + + Page toBeApprovedListPage(BoardMessageQueryForm queryForm); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java index cb84bee..d5c9f45 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -10,20 +10,18 @@ List planBizStatistics(String deptName); - EquipmentStatisticsDTO equipmentSummary(); + List equipmentStatistics(String columnName, List deptIds, String dictConvert); - String planFinishRate(List deptIds); + EquipmentMultiAggr inCheckMultiStatistic(List deptIds); - List equipmentStatistics(String columnName, List deptIds); + EquipmentMultiAggr toCheckMultiStatistic(List deptIds); - Page isUseEquipmentPage(Page page); + EquipmentMultiAggr inUseMultiStatistic(List deptIds); - Page toCheckEquipmentPage(Page page); + CheckStatisticsDTO checkSummary(); - EquipmentToCheckAggr toCheckStatistics(); + List checkStatisticsList(); - Page inCheckEquipmentPage(Page page); - EquipmentInCheckAggr inCheckStatistics(); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index e03e683..29c162d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -45,9 +46,11 @@ void removeCertificateInfo(Long equipmentId,Long certificateId); - Page remindListPage(Page page, EquipmentQueryForm queryForm); + Page remindListPage(Page page, EquipmentRemindQueryForm queryForm); - List remindList(EquipmentQueryForm queryForm); + List remindList(EquipmentRemindQueryForm queryForm); + + List expireTrend(String type); Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java index b062e82..c0b969a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentModelTechnicalTargetService.java @@ -18,4 +18,6 @@ void saveByModel(Long modelId, List technicalTargetList); void removeByModel(Long modelId); + + List listByModelIds(List modelIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 303ca75..53ba53b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -325,6 +325,7 @@ toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTO.setProcessId(task.getProcessInstanceId()); toBeApprovedDTOs.add(toBeApprovedDTO); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java index fa8bb1a..fdc91ef 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -27,7 +27,13 @@ this.saveOrUpdate(boardCalendar); } - private void remove(Long companyId,String markDate){ + @Override + public void removeDate(Long id) { + BoardCalendar calendar = this.getById(id); + this.remove(calendar.getCreateCompanyId(),calendar.getMarkDate()); + } + + private void remove(Long companyId, String markDate){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_company_id",companyId); queryWrapper.eq("mark_date",markDate); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java index d4a2481..953f4c7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -1,10 +1,33 @@ package com.casic.missiles.service.impl.board; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.board.BoardMessageQueryForm; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.model.board.BoardMessage; import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.board.IBoardMessageService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.ISystemDeptService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; /** *

@@ -15,6 +38,133 @@ * @since 2023-09-08 */ @Service +@RequiredArgsConstructor public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + private final AbstractPermissionContext permissionContext; + private final ISystemDeptService systemDeptService; + private final IBaseApprovalService baseApprovalService; + + @Override + public Page listPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + switch (queryForm.getMessageModule()) { + case "检定通知": + return checkMessage(page, queryForm); + case "通知公告": + return noticeMessage(page, queryForm); + case "工作提醒": + return remindMessage(page, queryForm); + default: + break; + } + return null; + } + + private boolean isAdmin(){ + return ShiroKit.isAdmin(); + } + + private Page checkMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.eq("notify_dept_id",systemDeptService.getUserCompany().getId()); + if(!isAdmin()){ + queryWrapper.eq("notify_user_id",permissionContext.getAuthService().getLoginUser().getId()); + } + List list = this.baseMapper.checkMessagePage(page,queryWrapper); + page.setRecords(list); + return page; + } + + private Page noticeMessage(Page page, BoardMessageQueryForm queryForm) { + QueryWrapper queryWrapper = this.commonQuery(queryForm); + Dept company = systemDeptService.getUserCompany(); + queryWrapper.eq("notify_dept_id",company.getId()); + List list = this.baseMapper.noticeMessagePage(page,queryWrapper,company.getId(),company.getFullName()); + page.setRecords(list); + return page; + } + + private Page remindMessage(Page page, BoardMessageQueryForm queryForm) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Dept company = systemDeptService.getUserCompany(); + QueryWrapper queryWrapper = this.commonQuery(queryForm); + queryWrapper.and(i->{ + i.eq("notify_user_id",user.getId()).or().eq("notify_dept_id",company.getId()); + }); + List list = this.baseMapper.remindMessagePage(page,queryWrapper,user.getId(),user.getName()); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(BoardMessageQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMessageType()),"message_type",queryForm.getMessageType()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getReadStatus()),"read_status",queryForm.getReadStatus()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getSourceModule()),"source_module",queryForm.getSourceModule()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getMessageStartTime()),"message_time",queryForm.getMessageStartTime()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getMessageEndTime()),"message_time",queryForm.getMessageEndTime()); + return queryWrapper; + } + + @Override + public void setMessageRead(BoardMessage boardMessage) { + boardMessage.setReadStatus("1"); + this.saveOrUpdate(boardMessage); + } + + @Override + public void changeTop(Long noticeId, Integer setTop) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("set_top",setTop); + updateWrapper.eq("biz_id",noticeId); + this.update(updateWrapper); + } + + @Override + public Page toBeApprovedListPage(BoardMessageQueryForm queryForm) { + Page page = PageFactory.defaultPage(); + List resultList = new ArrayList<>(); + + Arrays.stream(ApplyFromIdEnum.values()).forEach(applyFromIdEnum -> { + if(applyFromIdEnum.getValue().contains("计量业务")){ + return; + } + + List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); + if(CollectionUtils.isEmpty(toBeApprovedList)){ + return; + } + toBeApprovedList.forEach(a -> { + BoardMessage message = new BoardMessage(); + message.setMessageModule("审批提醒"); + message.setMessageType("审批提醒"); + message.setMessageTopic(applyFromIdEnum.getValue() + "待审批"); + message.setSourceModule(applyFromIdEnum.getSource()); + message.setReadStatus("0"); + message.setBizId(Long.valueOf(a.getBusinessKey())); + message.setMessageTime(DateUtil.parseDateTime(a.getCreateTime())); + + message.setFormId(applyFromIdEnum.getCode()); + message.setProcessId(a.getProcessId()); + message.setTaskId(a.getTaskId()); + message.setDecisionItem(a.getDecisionItem()); + + resultList.add(message); + }); + }); + resultList.sort((o1, o2) -> o2.getMessageTime().compareTo(o1.getMessageTime())); + page.setTotal(resultList.size()); + int startIdx = Math.toIntExact((page.getCurrent() - 1) * page.getSize()); + int endIdx = Math.toIntExact((page.getCurrent()) * page.getSize()); + if(startIdx > page.getTotal()){ + page.setRecords(new ArrayList<>()); + return page; + } + if(endIdx > page.getTotal()){ + endIdx = Math.toIntExact(page.getTotal()); + } + page.setRecords(resultList.subList(startIdx,endIdx)); + return page; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java index 9d306e4..ce36e9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -6,13 +6,17 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.board.*; import com.casic.missiles.dto.equipment.EquipmentQueryForm; +import com.casic.missiles.dto.equipment.EquipmentRemindList; +import com.casic.missiles.dto.equipment.EquipmentRemindQueryForm; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; @@ -29,6 +33,7 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; @@ -40,6 +45,7 @@ private final IEquipmentInfoService equipmentInfoService; private final IPlanEquipmentRelationService planRelationService; private final AbstractPermissionContext permissionContext; + private final AbstractDictService dictService; private final IRemindConfigService remindConfigService; private final NoticeBoardMapper noticeBoardMapper; @@ -88,7 +94,7 @@ return res; } - @Override + public EquipmentStatisticsDTO equipmentSummary() { List deptIds = null; if(!ShiroKit.isAdmin()){ @@ -141,7 +147,7 @@ return null; } - @Override + public String planFinishRate(List deptIds) { if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); @@ -154,7 +160,7 @@ } - public List equipmentStatistics(String columnName,List deptIds){ + public List equipmentStatistics(String columnName,List deptIds,String dictConvert){ if(CollUtil.isEmpty(deptIds)){ deptIds = getScopeOrCurrentDeptIds(); } @@ -169,71 +175,82 @@ String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); queryWrapper.select(selectSql); queryWrapper.orderByDesc("count"); - queryWrapper.last("limit 10"); + queryWrapper.last("limit 8"); List> resMap = equipmentInfoService.listMaps(queryWrapper); - return EquipmentCommonAggr.mapToObjects(resMap); + List resList = EquipmentCommonAggr.mapToObjects(resMap); + if(StrUtil.isNotEmpty(dictConvert)){ + for (EquipmentCommonAggr commonAggr : resList) { + commonAggr.setName(dictService.getDictNameByCode(dictConvert,commonAggr.getName())); + } + } + return resList; } - @Override - public Page isUseEquipmentPage(Page page) { + + public Page inUseEquipmentPage(Page page) { EquipmentQueryForm queryForm = new EquipmentQueryForm(); queryForm.setDeptIds(getScopeOrCurrentDeptIds()); queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); return equipmentInfoService.listPage(page,queryForm); } - @Override - public Page toCheckEquipmentPage(Page page) { - QueryWrapper queryWrapper = toCheckQueryWrapper(); - List list = this.noticeBoardMapper.toCheckEquipmentPage(page,queryWrapper); + + @NotNull + private List toCheckEquipmentList(List deptIds) { + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + EquipmentRemindQueryForm queryForm = new EquipmentRemindQueryForm(); + queryForm.setDeptIds(deptIds); + queryForm.setEquipmentType(EQUIPMENT_TYPE_NORMAL); + return equipmentInfoService.remindList(queryForm); + } + + + + @Override + public EquipmentMultiAggr toCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + List list = this.toCheckEquipmentList(deptIds); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); - try { - DictCodeUtils.convertDictCodeToName(i); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if(i.getCertificateValid().before(new Date())){ - i.setValidStatusName("已超期"); - }else { - i.setValidStatusName("未超期"); - } }); - page.setRecords(list); - return page; + + // 待检设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("已超期", (int) list.stream().filter(i->i.getCertificateValid().before(new Date())).count())); + statistic.add(new EquipmentCommonAggr("未超期", (int) list.stream().filter(i->i.getCertificateValid().after(new Date())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentRemindCommonAggrs(list,EquipmentRemindList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; } - @NotNull - private QueryWrapper toCheckQueryWrapper() { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.le("certificate_valid", calendar.getTime()); - - List deptIds = getScopeOrCurrentDeptIds(); - queryWrapper.in(CollUtil.isNotEmpty(deptIds),"dept_id",deptIds); - queryWrapper.eq("equipment_type",EQUIPMENT_TYPE_NORMAL); - queryWrapper.eq("is_del","0"); - return queryWrapper; - } - - @Override - public EquipmentToCheckAggr toCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); - return this.noticeBoardMapper.toCheckStatistics(queryWrapper); - } - - @Override public Page inCheckEquipmentPage(Page page){ - QueryWrapper queryWrapper = inCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); - List list = this.noticeBoardMapper.inCheckEquipmentPage(page,queryWrapper); + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); list.forEach(i->{ i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -248,20 +265,63 @@ return page; } - @Override + public EquipmentInCheckAggr inCheckStatistics(){ - QueryWrapper queryWrapper = toCheckQueryWrapper(); + QueryWrapper queryWrapper = inCheckQueryWrapper(null); return this.noticeBoardMapper.inCheckStatistics(queryWrapper, SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); } + @Override + public EquipmentMultiAggr inCheckMultiStatistic(List deptIds) { + EquipmentMultiAggr res = new EquipmentMultiAggr(); + QueryWrapper queryWrapper = inCheckQueryWrapper(deptIds); + + List list = this.noticeBoardMapper.inCheckEquipmentList(queryWrapper); + list.forEach(i->{ + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + i.setCheckCompletion(SampleStatusEnum.getByStatus(i.getSampleStatus()).getCheckCompletion()); + }); + + // 检定设备态势(未检定、检定中、已检完) + List statistic = new ArrayList<>(); + statistic.add(new EquipmentCommonAggr("未检定", (int) list.stream().filter(i->CheckCompletionEnum.UNCHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("检定中", (int) list.stream().filter(i->CheckCompletionEnum.IN_CHECK.equals(i.getCheckCompletion())).count())); + statistic.add(new EquipmentCommonAggr("已检完", (int) list.stream().filter(i->CheckCompletionEnum.CHECKED.equals(i.getCheckCompletion())).count())); + res.setStatistic(statistic); + + //受检单位/负责人排行榜;单位/部门列表 + // 按company排序 + List companyAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getCompanyName); + res.setCompanyAggrList(companyAggrList); + // 按负责人排序 + List directorAggrList = getEquipmentCommonAggrs(list,EquipmentBoardList::getDirectorName); + res.setDircetorAggrList(directorAggrList); + + // 按设备名称-规格型号-所属单位排序 + Map> companyGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setCompanyList(getCompanyGroupList(companyGroupMap)); + // 按设备名称-规格型号-所属单位-所在部门排序 + Map> deptGroupMap = list.stream().collect(Collectors.groupingBy(i -> String.format("%s;;;%s;;;%s;;;%s", i.getEquipmentName(),i.getModel(),i.getCompanyName(),i.getDeptName()), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + res.setDeptList(getDeptGroupList(deptGroupMap)); + + return res; + } + + + @NotNull - private QueryWrapper inCheckQueryWrapper() { + private QueryWrapper inCheckQueryWrapper(List deptIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); - List deptIds = getScopeOrCurrentDeptIds(); + if(ObjectUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } queryWrapper.in(CollUtil.isNotEmpty(deptIds),"e.dept_id",deptIds); queryWrapper.eq("e.equipment_type",EQUIPMENT_TYPE_NORMAL); queryWrapper.eq("e.is_del","0"); @@ -270,4 +330,140 @@ } + @NotNull + private List getEquipmentRemindCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + companyAggrList.add(new EquipmentCommonAggr(key,groupMap.get(key).size())); + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + @NotNull + private List getEquipmentCommonAggrs(List list, Function classifier,String dictConvert) { + List companyAggrList = new ArrayList<>(); + Map> groupMap = list.stream().collect(Collectors.groupingBy(classifier)); + for (String key : groupMap.keySet()) { + String keyName = dictService.getDictNameByCode(dictConvert,key); + if(StrUtil.isNotEmpty(keyName)){ + companyAggrList.add(new EquipmentCommonAggr(keyName,groupMap.get(key).size())); + } + } + companyAggrList.sort((o1, o2) -> o2.getCount()-o1.getCount()); + return companyAggrList; + } + + private List getDeptGroupList(Map> deptGroupMap) { + List deptGroupList = new ArrayList<>(); + for (String key : deptGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setDeptName(key.split(";;;")[3]); + item.setCount(deptGroupMap.get(key).size()); + deptGroupList.add(item); + } + return deptGroupList; + } + + @NotNull + private List getCompanyGroupList(Map> companyGroupMap) { + List companyGroupList = new ArrayList<>(); + for (String key : companyGroupMap.keySet()) { + EquipmentMultiAggr.EquipmentSimpleList item = new EquipmentMultiAggr.EquipmentSimpleList(); + item.setEquipmentName(key.split(";;;")[0]); + item.setModel(key.split(";;;")[1]); + item.setCompanyName(key.split(";;;")[2]); + item.setCount(companyGroupMap.get(key).size()); + companyGroupList.add(item); + } + return companyGroupList; + } + + @Override + public EquipmentMultiAggr inUseMultiStatistic(List deptIds) { + EquipmentQueryForm queryForm = new EquipmentQueryForm(); + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + queryForm.setDeptIds(deptIds); + queryForm.setUsageStatus(EquipmentStatusTypeEnum.UNSEAL); + List list = equipmentInfoService.list(queryForm); + + EquipmentMultiAggr res = new EquipmentMultiAggr(); + res.setStatistic(getEquipmentCommonAggrs(list,EquipmentInfo::getCategory, MeterDictCode.EQUIPMENT_CATEGORY)); + res.setNameAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getEquipmentName, null)); + res.setMeterAggrList(getEquipmentCommonAggrs(list,EquipmentInfo::getMeterIdentify, MeterDictCode.EQUIPMENT_METER_IDENTITY)); + return res; + } + + public CheckStatisticsDTO checkSummary() { + List deptIds = getScopeOrCurrentDeptIds(); + + List list = this.noticeBoardMapper.statisticsInfoList(null,EQUIPMENT_TYPE_NORMAL,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + + CheckStatisticsDTO statisticsDTO = new CheckStatisticsDTO(); + + statisticsDTO.setYearToCheck(list.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(list.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + return statisticsDTO; + } + + @Override + public List checkStatisticsList() { + List deptIds = getScopeOrCurrentDeptIds(); + Calendar endCal = Calendar.getInstance(); + endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH)); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,-5); + startCal.set(Calendar.DAY_OF_MONTH,startCal.getActualMinimum(Calendar.DAY_OF_MONTH)); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + List res = new ArrayList<>(); + String startTime = DateUtil.formatDateTime(startCal.getTime()); + String endTime = DateUtil.formatDateTime(endCal.getTime()); + List shouldCheckList = this.noticeBoardMapper.shouldCheckAggr(deptIds,startTime,endTime); + List haveCheckList = this.noticeBoardMapper.haveCheckAggr(deptIds,SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED), + startTime,endTime); + while (startCal.before(endCal)){ + CheckStatisticsList item = new CheckStatisticsList(); + String time = DateUtil.format(startCal.getTime(),"yyyy-MM"); + item.setTime(time); + item.setShouldCheck(0); + item.setHaveChecked(0); + if(CollUtil.isNotEmpty(shouldCheckList)){ + Optional opt1 = shouldCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt1.ifPresent(equipmentCommonAggr -> item.setShouldCheck(equipmentCommonAggr.getCount())); + } + if(CollUtil.isNotEmpty(haveCheckList)){ + Optional opt2 = haveCheckList.stream().filter(i->time.equals(i.getName())).findFirst(); + opt2.ifPresent(equipmentCommonAggr -> item.setHaveChecked(equipmentCommonAggr.getCount())); + } + res.add(item); + startCal.add(Calendar.MONTH,1); + } + + return res; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index c11cf6f..3169b84 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentCommonAggr; import com.casic.missiles.dto.board.EquipmentStatisticsDTO; import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; @@ -37,7 +38,9 @@ import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +103,16 @@ } } + public void warpEquipmentRemindInfo(EquipmentRemindList i) { + try { + i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); + i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @Override public List list(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = commonQuery(queryForm); @@ -144,7 +157,21 @@ queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); queryWrapper.in(CollUtil.isNotEmpty(queryForm.getUsageStatusList()), "usage_status", queryForm.getUsageStatusList()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.eq(ObjectUtil.isNotEmpty(queryForm.getCompanyId()),"company_id",queryForm.getCompanyId()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getDirectorName()),"director_name",queryForm.getDirectorName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUseSign()),"use_sign",queryForm.getUseSign()); + queryWrapper.apply(StrUtil.isNotEmpty(queryForm.getInstallLocation()),"CONCAT(install_location,install_location_ext) like '%{0}%'",queryForm.getInstallLocation()); + if(ObjectUtil.isNotEmpty(queryForm.getTaskId())){ + String existSql = String.format("(select id from eqpt_equipment_task_relation where task_id = %d and equipment_id = eqpt_equipment_info.id)",queryForm.getTaskId()); + queryWrapper.exists(existSql); + } + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getCheckOrganization()),"check_organization",queryForm.getCheckOrganization()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getMeterIdentify()),"meter_identify",queryForm.getMeterIdentify()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCheckDateStart()),"check_date",queryForm.getCheckDateStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCheckDateEnd()),"check_date",queryForm.getCheckDateEnd()); } queryWrapper.eq("is_del", 0); return queryWrapper; @@ -158,9 +185,10 @@ warpEquipmentInfo(equipmentInfo); equipmentInfo.setCompanyName(permissionContext.getDeptService().getDeptName(equipmentInfo.getCompanyId())); equipmentInfo.setDeptName(permissionContext.getDeptService().getDeptName(equipmentInfo.getDeptId())); - equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + BeanUtil.copyProperties(equipmentInfo, infoForm); + infoForm.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); infoForm.setAttachments(attachmentService.selectByEquipment(equipmentId)); infoForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(equipmentId)); infoForm.setCertificateList(allCertificate(equipmentId, equipmentInfo.getEquipmentType())); @@ -376,34 +404,126 @@ } @Override - public Page remindListPage(Page page, EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public Page remindListPage(Page page, EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectListPage(page, dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindListPage(page, dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); page.setRecords(list); return page; } @Override - public List remindList(EquipmentQueryForm queryForm) { - Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DATE, remindTime); - QueryWrapper queryWrapper = commonQuery(queryForm); - queryWrapper.le("certificate_valid", calendar.getTime()); + public List remindList(EquipmentRemindQueryForm queryForm) { + QueryWrapper queryWrapper = remindQuery(queryForm); DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); dataScope.setScopeName("dept_id"); - List list = this.baseMapper.selectList(dataScope, queryWrapper); - list.forEach(this::warpEquipmentInfo); + List list = this.baseMapper.selectRemindList(dataScope, queryWrapper); + list.forEach(this::warpEquipmentRemindInfo); return list; } + private QueryWrapper remindQuery(EquipmentRemindQueryForm queryForm){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollUtil.isNotEmpty(queryForm.getIds())) { + queryWrapper.in("id", queryForm.getIds()); + } else { + queryWrapper.in(CollUtil.isNotEmpty(queryForm.getDeptIds()), "dept_id", queryForm.getDeptIds()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getEquipmentNo()), "equipment_no", queryForm.getEquipmentNo()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getModel()),"model",queryForm.getModel()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getEquipmentType()), "equipment_type", queryForm.getEquipmentType()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getManufactureNo()),"manufacture_no",queryForm.getManufactureNo()); + queryWrapper.like(StrUtil.isNotEmpty(queryForm.getUsePosition()), "use_position", queryForm.getUsePosition()); + queryWrapper.eq(StrUtil.isNotEmpty(queryForm.getUsageStatus()), "usage_status", queryForm.getUsageStatus()); + queryWrapper.ge(StrUtil.isNotEmpty(queryForm.getCertificateValidStart()), "certificate_valid", queryForm.getCertificateValidStart()); + queryWrapper.le(StrUtil.isNotEmpty(queryForm.getCertificateValidEnd()), "certificate_valid", queryForm.getCertificateValidEnd()); + queryWrapper.like(ObjectUtil.isNotEmpty(queryForm.getTaskId()),"taskIds",queryForm.getTaskId()); + if (StrUtil.isNotEmpty(queryForm.getTaskStartTime()) || StrUtil.isNotEmpty(queryForm.getTastEndTime())) { + queryWrapper.and(i -> { + i.le(StrUtil.isNotEmpty(queryForm.getTaskStartTime()), "task_start_time", queryForm.getTaskStartTime()) + .or() + .ge(StrUtil.isNotEmpty(queryForm.getTastEndTime()), "task_end_time", queryForm.getTastEndTime()); + }); + } + } + queryWrapper.eq("is_del", 0); + queryWrapper.le("remind_valid",new Date()); + return queryWrapper; + } + + @Override + public List expireTrend(String type) { + switch (type){ + case "month": + return expireTrendByMonth(); + case "year": + return expireTrendByYear(); + default: + return null; + } + } + + private List expireTrendByYear(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.MONTH,1); + startCal.set(Calendar.DAY_OF_MONTH,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,13); + endCal.set(Calendar.DAY_OF_MONTH,1); + endCal.add(Calendar.DATE,-1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM",Calendar.MONTH); + } + + private List expireTrendEquipmentList(String startTime,String endTime){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("certificate_valid", startTime); + queryWrapper.le("certificate_valid", endTime); + queryWrapper.eq("is_del",0); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("dept_id"); + return this.baseMapper.selectList(dataScope,queryWrapper); + } + + private List expireTrendByMonth(){ + Calendar startCal = Calendar.getInstance(); + startCal.add(Calendar.DATE,1); + startCal.set(Calendar.HOUR_OF_DAY,0); + startCal.set(Calendar.MINUTE,0); + startCal.set(Calendar.SECOND,0); + + Calendar endCal = Calendar.getInstance(); + endCal.add(Calendar.MONTH,1); + endCal.set(Calendar.HOUR_OF_DAY,23); + endCal.set(Calendar.MINUTE,59); + endCal.set(Calendar.SECOND,59); + + return getEquipmentCommonAggrs(startCal, endCal, "yyyy-MM-dd",Calendar.DATE); + } + + @NotNull + private List getEquipmentCommonAggrs(Calendar startCal, Calendar endCal, String format, int step) { + List equipmentInfos = expireTrendEquipmentList(DateUtil.formatDateTime(startCal.getTime()), DateUtil.formatDateTime(endCal.getTime())); + List res = new ArrayList<>(); + while (startCal.before(endCal)) { + String month = DateUtil.format(startCal.getTime(), format); + Long count = equipmentInfos.stream().filter(i -> month.equals(DateUtil.format(i.getCertificateValid(), format))).count(); + res.add(new EquipmentCommonAggr(month, count.intValue())); + startCal.add(step, 1); + } + return res; + } + @Override public Page certificateListPage(Page page, EquipmentCertificateQueryForm queryForm) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java index 897dd9e..938eb70 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelInfoServiceImpl.java @@ -1,12 +1,14 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.annotation.DictCodeField; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.dto.equipment.EquipmentModelQueryForm; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -14,6 +16,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.model.equipment.EquipmentModelInfo; import com.casic.missiles.mapper.equipment.EquipmentModelInfoMapper; +import com.casic.missiles.model.equipment.EquipmentModelTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.casic.missiles.service.equipment.IEquipmentModelInfoService; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -89,8 +93,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScopePage(dataScope,page,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -106,8 +114,12 @@ dataScope.setScopeName("create_dept_id"); QueryWrapper queryWrapper = commonQuery(queryForm); List list = this.baseMapper.listScope(dataScope,queryWrapper); + List technicalTargetList = technicalTargetService.listByModelIds(list.stream().map(EquipmentModelInfo::getId).collect(Collectors.toList())); for (EquipmentModelInfo equipmentModelInfo : list) { try { + if(CollUtil.isNotEmpty(technicalTargetList)){ + equipmentModelInfo.setTechnicalTargetList(technicalTargetList.stream().filter(i->equipmentModelInfo.getId().equals(i.getModelId())).collect(Collectors.toList())); + } DictCodeUtils.convertDictCodeToName(equipmentModelInfo); }catch (Exception e){ log.error(e.getMessage()); @@ -130,6 +142,12 @@ public List listEquipmentName() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("distinct equipment_name as equipment_name"); + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("equipment_name").toString()).collect(Collectors.toList()); } @@ -138,6 +156,11 @@ public List listModel(String equipmentName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("equipment_name",equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + List dataScopeDeptIds = dataScope.getDeptIds(); + queryWrapper.in("create_dept_id",dataScopeDeptIds); + } queryWrapper.select("distinct model as model"); List> maps = this.listMaps(queryWrapper); return maps.stream().map(i->i.get("model").toString()).collect(Collectors.toList()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java index c408ef4..2bfe8c5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentModelTechnicalTargetServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -37,4 +38,16 @@ wrapper.eq("model_id",modelId); this.remove(wrapper); } + + @Override + public List listByModelIds(List modelIds) { + if(CollUtil.isNotEmpty(modelIds)){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("model_id",modelIds); + return this.list(wrapper); + }else { + return new ArrayList<>(); + } + + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java index e6af5fd..ba3fdb1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindConfigServiceImpl.java @@ -8,13 +8,17 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.model.system.RemindConfig; import com.casic.missiles.mapper.system.RemindConfigMapper; +import com.casic.missiles.model.system.RemindRelation; import com.casic.missiles.service.system.IRemindConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.system.IRemindRelationService; import lombok.RequiredArgsConstructor; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -29,12 +33,40 @@ public class RemindConfigServiceImpl extends ServiceImpl implements IRemindConfigService { private final AbstractPermissionContext permissionContext; + private final IRemindRelationService remindRelationService; @Override - public Page listScopePage(Page page) { + @Transactional + public void add(RemindConfig remindConfig) { + this.save(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(),remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void update(RemindConfig remindConfig) { + this.updateById(remindConfig); + remindRelationService.saveByRemind(remindConfig.getId(), remindConfig.getModelIds(), remindConfig.getTaskIds()); + } + + @Override + @Transactional + public void remove(Long id) { + this.removeById(id); + remindRelationService.removeByRemind(id); + } + + @Override + public Page listScopePage(Page page,String remindName) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); - dataScope.setScopeName("create_dept_id"); - List list = this.baseMapper.listScopePage(dataScope,page,null); + dataScope.setScopeName("a.create_dept_id"); + List list = this.baseMapper.listScopePage(dataScope,page,remindName); + List relations = remindRelationService.listByRemindIds(list.stream().map(RemindConfig::getId).collect(Collectors.toList())); + for (RemindConfig remindConfig : list) { + List subRelation = relations.stream().filter(i->i.getRemindId().equals(remindConfig.getId())).collect(Collectors.toList()); + remindConfig.setModelIds(subRelation.stream().map(RemindRelation::getModelId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + remindConfig.setTaskIds(subRelation.stream().map(RemindRelation::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList())); + } page.setRecords(list); return page; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java new file mode 100644 index 0000000..33e9637 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/RemindRelationServiceImpl.java @@ -0,0 +1,67 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.system.RemindRelation; +import com.casic.missiles.mapper.system.RemindRelationMapper; +import com.casic.missiles.service.system.IRemindRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +@Service +public class RemindRelationServiceImpl extends ServiceImpl implements IRemindRelationService { + + @Override + @Transactional + public void saveByRemind(Long remindId, List modelIds, List taskIds) { + this.removeByRemind(remindId); + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(modelIds)){ + for (Long modelId : modelIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setModelId(modelId); + list.add(relation); + } + } + if(CollUtil.isNotEmpty(taskIds)){ + for (Long taskId : taskIds) { + RemindRelation relation = new RemindRelation(); + relation.setRemindId(remindId); + relation.setTaskId(taskId); + list.add(relation); + } + } + this.saveBatch(list); + } + + @Override + public void removeByRemind(Long remindId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("remind_id",remindId); + this.remove(queryWrapper); + } + + @Override + public List listByRemindIds(List remindIds) { + if(CollUtil.isNotEmpty(remindIds)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("remind_id",remindIds); + return this.list(queryWrapper); + }else { + return new ArrayList<>(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java new file mode 100644 index 0000000..8dac37e --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemDeptServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl.system; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.service.system.ISystemDeptService; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.core.datascope.ScopeEnums.ALL_TYPE; + +@Service +@RequiredArgsConstructor +public class SystemDeptServiceImpl implements ISystemDeptService { + + private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + + @Override + public Dept getUserCompany() { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + Long deptId = user.getDeptId(); + List parentDeptIds = deptService.getParentListById(deptId); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List deptList = new ArrayList<>(); + parentDeptIds.forEach(i -> deptList.add(deptService.getById(i))); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(top)) { + Dept company = deptList.stream().filter(i -> top.getId().equals(i.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + return company; + } + } + } + return deptService.getById(deptId); + } + + + @Override + public List getAllCompanyList() { + List allDept = deptService.list(null); + Dept top = allDept.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + if(ObjectUtil.isEmpty(top)){ + return null; + } + List secondDepts = allDept.stream().filter(i-> top.getId().equals(i.getPid())).collect(Collectors.toList()); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if(!ALL_TYPE.equals(dataScope.getScopeEnums())){ + secondDepts = secondDepts.stream().filter(i->dataScope.getDeptIds().contains(i.getId())).collect(Collectors.toList()); + } + return secondDepts; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java index f6ed280..f197fa6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemNoticeServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.impl.system; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -15,12 +16,14 @@ import com.casic.missiles.mapper.system.SystemNoticeUserRelationMapper; import com.casic.missiles.model.system.SystemNotice; import com.casic.missiles.model.system.SystemNoticeUserRelation; +import com.casic.missiles.service.board.IBoardMessageService; import com.casic.missiles.service.system.ISystemNoticeService; import com.casic.missiles.service.system.ISystemNoticeUserRelationService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -42,6 +45,8 @@ private ISystemNoticeUserRelationService noticeUserRelationService; @Autowired private SystemNoticeUserRelationMapper noticeUserRelationMapper; + @Autowired + private IBoardMessageService boardMessageService; @Override public Page listPage(Page page, NoticeListRequest request) { @@ -103,4 +108,14 @@ } return ReturnUtil.failed(); } + + @Override + @Transactional + public void changeTop(Long id, Integer setTop) { + UpdateWrapper noticeWrapper = new UpdateWrapper<>(); + noticeWrapper.set("set_top",setTop); + noticeWrapper.eq("id",id); + this.update(noticeWrapper); + boardMessageService.changeTop(id,setTop); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java index fecdd52..8f96ac7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindConfigService.java @@ -14,7 +14,13 @@ */ public interface IRemindConfigService extends IService { - Page listScopePage(Page page); + void add(RemindConfig remindConfig); + + void update(RemindConfig remindConfig); + + void remove(Long id); + + Page listScopePage(Page page,String remindName); Integer getRemindTimeByDeptId(Long deptId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java new file mode 100644 index 0000000..d0084ba --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/IRemindRelationService.java @@ -0,0 +1,24 @@ +package com.casic.missiles.service.system; + +import com.casic.missiles.model.system.RemindRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-18 + */ +public interface IRemindRelationService extends IService { + + void saveByRemind(Long remindId, List modelIds, List taskIds); + + void removeByRemind(Long remindId); + + List listByRemindIds(List remindIds); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemDeptService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemDeptService.java new file mode 100644 index 0000000..a821d17 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemDeptService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.service.system; + +import com.casic.missiles.modular.system.model.Dept; + +import java.util.List; + +public interface ISystemDeptService { + + Dept getUserCompany(); + + List getAllCompanyList(); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemNoticeService.java index f1b2fed..c041da5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemNoticeService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/system/ISystemNoticeService.java @@ -27,4 +27,6 @@ ReturnDTO deleteNotice(Long id); ReturnDTO noticeRead(NoticeReadRequest noticeReadRequest); + + void changeTop(Long id,Integer setTop); }